|
|
3 هفته پیش | |
|---|---|---|
| .. | ||
| README.md | 3 هفته پیش | |
| index.coffee | 3 هفته پیش | |
| index.pug | 3 هفته پیش | |
| index.styl | 3 هفته پیش | |
SuccessModal - компонент модального окна для отображения успешных операций, подтверждений и уведомлений. Предоставляет стандартизированный интерфейс для информирования пользователя о успешном выполнении действий с возможностью кастомизации контента и поведения.
https://gogs.osvoj.ru/s5l.ru/borbad.s5l.ru/src/master/vue/app/shared/SuccessModal/
# В основном файле приложения (app/temp.coffee)
components:
'success-modal': require 'app/shared/SuccessModal'
success-modal(
:show="showSuccess"
title="Операция выполнена"
message="Данные успешно сохранены"
@close="showSuccess = false"
)
success-modal(
:show="showSuccess"
title="Заказ оформлен"
message="Ваш заказ успешно создан и передан в обработку"
@close="handleOrderSuccess"
)
show (обязательный)BooleanПример:
success-modal(:show="isModalVisible" @close="isModalVisible = false")
title (опциональный)String'Успешно!'Пример:
success-modal(:show="showModal" title="Профиль обновлен")
message (опциональный)String''Пример:
success-modal(
:show="showModal"
message="Изменения успешно сохранены и применены к вашему профилю"
)
buttonText (опциональный)String'Понятно'Пример:
success-modal(:show="showModal" buttonText="Отлично!")
icon (опциональный)String'check-circle'Пример:
success-modal(:show="showModal" icon="check")
size (опциональный)String'md''sm', 'md', 'lg', 'xl'Пример:
success-modal(:show="showModal" size="lg")
closeOnBackdrop (опциональный)BooleantrueПример:
success-modal(:show="showModal" :closeOnBackdrop="false")
showCloseButton (опциональный)BooleantrueПример:
success-modal(:show="showModal" :showCloseButton="false")
autoClose (опциональный)Boolean | Numberfalsetrue - 3000ms, если число - указанное время в msПримеры:
success-modal(:show="showModal" :autoClose="true") // Закроется через 3 секунды
success-modal(:show="showModal" :autoClose="5000") // Закроется через 5 секунд
@closenullcloseOnBackdrop = true)autoClose включен)Пример:
success-modal(:show="showModal" @close="handleModalClose")
@confirmnullПример:
success-modal(:show="showModal" @confirm="handleSuccessAction")
[body] (основной слот)Примеры:
success-modal(:show="showModal" title="Заказ оформлен")
div(class="space-y-4")
p Ваш заказ №{{ orderId }} успешно создан
div(class="bg-gray-50 p-4 rounded")
h4(class="font-semibold") Детали заказа:
p Сумма: {{ orderAmount }} TJS
p Статус: В обработке
[icon] (опциональный)Пример:
success-modal(:show="showModal")
template([icon])
div(class="w-16 h-16 bg-green-100 rounded-full flex items-center justify-center")
icon(name="trophy" class="w-8 h-8 text-green-600")
[actions] (опциональный)Пример:
success-modal(:show="showModal" title="Заказ создан")
template([actions])
div(class="flex space-x-3")
button(
@click="$emit('close')"
class="px-4 py-2 border border-gray-300 rounded hover:bg-gray-50"
) Закрыть
app-link(
to="/orders"
class="app-link--primary"
) Перейти к заказам
app-link(
to="/products"
class="app-link--secondary"
) Продолжить покупки
success-modal(
:show="orderSuccess"
title="Заказ оформлен!"
message="Ваш заказ успешно создан. Номер заказа: #12345"
icon="shopping-bag"
@close="handleOrderSuccessClose"
)
success-modal(
:show="registrationSuccess"
title="Добро пожаловать!"
message="Регистрация завершена успешно. На ваш email отправлено письмо с подтверждением."
buttonText="Начать"
@confirm="redirectToDashboard"
)
success-modal(
:show="settingsSaved"
title="Настройки сохранены"
message="Изменения в настройках профиля успешно применены"
autoClose="2000"
@close="resetSettingsState"
)
success-modal(
:show="showCustomSuccess"
title="Билеты забронированы"
size="lg"
)
div(class="space-y-4")
p(class="text-lg") Ваши билеты успешно забронированы!
div(class="bg-blue-50 border border-blue-200 rounded-lg p-4")
h4(class="font-semibold text-blue-900 mb-2") Важная информация:
ul(class="list-disc list-inside space-y-1 text-blue-800")
li Сохраните QR-код из письма
li Приходите за 30 минут до начала
li Иметь при себе документ, удостоверяющий личность
p(class="text-sm text-gray-600") Подробности отправлены на ваш email
template([actions])
div(class="flex flex-col sm:flex-row gap-3")
button(
@click="$emit('close')"
class="px-6 py-3 border border-gray-300 rounded-lg hover:bg-gray-50 flex-1"
) Закрыть
app-link(
to="/tickets"
class="app-link--primary text-center flex-1"
) Мои билеты
success-modal(
:show="showAutoClose"
title="Форма отправлена"
message="Ваше сообщение успешно отправлено. Мы свяжемся с вами в ближайшее время."
autoClose="4000"
@close="resetContactForm"
)
success-modal(
:show="processingComplete"
title="Обработка завершена"
message="Все данные успешно обработаны и сохранены в системе."
:closeOnBackdrop="false"
:showCloseButton="false"
@confirm="redirectToNextStep"
)
# В компоненте
methods:
showSuccessModal: (title, message) ->
EventBus.emit('show_success_modal', { title, message })
# В основном приложении (app/temp.coffee)
EventBus.on 'show_success_modal', (data) ->
_.openModal('success-modal', data)
success-modal(
:show="_.modalState.isVisible && _.modalState.component === 'success-modal'"
:title="_.modalState.props.title"
:message="_.modalState.props.message"
@close="_.closeModal()"
)
//- Маленький (sm)
success-modal(:show="showModal" size="sm")
//- Средний (md) - по умолчанию
success-modal(:show="showModal" size="md")
//- Большой (lg)
success-modal(:show="showModal" size="lg")
//- Очень большой (xl)
success-modal(:show="showModal" size="xl")
Компонент поддерживает стандартные классы Tailwind CSS для дополнительной стилизации:
success-modal(
:show="showModal"
class="success-modal-custom"
)
//- Правильно
success-modal(:show="showModal" @close="showModal = false")
//- Опасно (модальное окно не сможет закрыться)
success-modal(:show="showModal")
//- Для кратковременных сообщений
success-modal(
:show="showTempMessage"
message="Настройки сохранены"
autoClose="2000"
@close="showTempMessage = false"
)
//- Хорошо
success-modal(
:show="showSuccess"
title="Профиль обновлен"
message="Изменения в вашем профиле успешно сохранены и применены"
)
//- Плохо
success-modal(:show="showSuccess" message="Успешно")
//- Вместо длинного message
success-modal(:show="showComplex" title="Отчет готов")
div(class="space-y-3")
p Отчет успешно сгенерирован и содержит:
ul(class="list-disc list-inside")
li 25 записей о мероприятиях
li Статистику посещаемости
li Финансовые показатели
p(class="text-sm text-gray-600") Файл доступен для скачивания в вашем кабинете
//- Для финансовых операций
success-modal(
:show="paymentSuccess"
title="Платеж выполнен"
icon="credit-card"
buttonText="Перейти к заказу"
)
//- Для создания контента
success-modal(
:show="contentCreated"
title="Материал опубликован"
icon="edit"
buttonText="Посмотреть"
)
# В методах компонента
checkModalState: ->
debug.log "Modal visible: "+@show
debug.log "Modal title: "+@title
debug.log "Modal message: "+@message
# В основном приложении
EventBus.on 'success_modal_closed', (data) ->
debug.log "Success modal closed"
EventBus.on 'success_modal_confirmed', (data) ->
debug.log "Success modal confirmed"
Компонент SuccessModal предоставляет унифицированный и гибкий способ отображения успешных операций в приложении, обеспечивая согласованный пользовательский опыт и широкие возможности для кастомизации под конкретные сценарии использования.