debian-mirror-gitlab/app/components/pajamas/alert_component.rb

55 lines
1.3 KiB
Ruby
Raw Normal View History

2022-06-21 17:19:12 +05:30
# frozen_string_literal: true
# Renders a GlAlert root element
module Pajamas
class AlertComponent < Pajamas::Component
# @param [String] title
# @param [Symbol] variant
# @param [Boolean] dismissible
2022-07-16 23:28:13 +05:30
# @param [Boolean] show_icon
2022-07-23 23:45:48 +05:30
# @param [Hash] alert_options
# @param [Hash] close_button_options
2022-06-21 17:19:12 +05:30
def initialize(
2022-07-16 23:28:13 +05:30
title: nil, variant: :info, dismissible: true, show_icon: true,
2022-07-23 23:45:48 +05:30
alert_options: {}, close_button_options: {})
2022-11-25 23:54:43 +05:30
@title = title.presence
@variant = filter_attribute(variant&.to_sym, VARIANT_ICONS.keys, default: :info)
2022-06-21 17:19:12 +05:30
@dismissible = dismissible
2022-07-16 23:28:13 +05:30
@show_icon = show_icon
2022-07-23 23:45:48 +05:30
@alert_options = alert_options
@close_button_options = close_button_options
2022-06-21 17:19:12 +05:30
end
2022-07-16 23:28:13 +05:30
def base_class
classes = ["gl-alert-#{@variant}"]
classes.push('gl-alert-not-dismissible') unless @dismissible
classes.push('gl-alert-no-icon') unless @show_icon
classes.join(' ')
end
2022-06-21 17:19:12 +05:30
private
delegate :sprite_icon, to: :helpers
2022-07-16 23:28:13 +05:30
renders_one :body
renders_one :actions
2022-11-25 23:54:43 +05:30
VARIANT_ICONS = {
2022-06-21 17:19:12 +05:30
info: 'information-o',
warning: 'warning',
success: 'check-circle',
danger: 'error',
tip: 'bulb'
}.freeze
def icon
2022-11-25 23:54:43 +05:30
VARIANT_ICONS[@variant]
2022-06-21 17:19:12 +05:30
end
def icon_classes
"gl-alert-icon#{' gl-alert-icon-no-title' if @title.nil?}"
end
end
end