91 lines
2.8 KiB
Ruby
91 lines
2.8 KiB
Ruby
module AdditionalsFontawesomeHelper
|
|
# name = TYPE-FA_NAME, eg. fas_car
|
|
# fas_cloud-upload-alt
|
|
# far_id-card
|
|
# fab_font-awesome
|
|
# options = class
|
|
# pre_text
|
|
# post_text
|
|
# title
|
|
def font_awesome_icon(name, options = {})
|
|
info = AdditionalsFontAwesome.value_info name
|
|
return '' if info.blank?
|
|
|
|
post_text = ''
|
|
options[:'aria-hidden'] = 'true'
|
|
options[:class] = if options[:class].present?
|
|
"#{info[:classes]} #{options[:class]}"
|
|
else
|
|
info[:classes]
|
|
end
|
|
|
|
s = []
|
|
if options[:pre_text].present?
|
|
s << options[:pre_text]
|
|
s << ' '
|
|
options.delete :pre_text
|
|
end
|
|
if options[:post_text].present?
|
|
post_text = options[:post_text]
|
|
options.delete :post_text
|
|
end
|
|
s << tag.span(options)
|
|
if post_text.present?
|
|
s << ' '
|
|
s << post_text
|
|
end
|
|
safe_join s
|
|
end
|
|
|
|
def additionals_fontawesome_select(form, selected, options = {})
|
|
options[:include_blank] ||= true unless options[:required]
|
|
html_options = {}
|
|
|
|
additionals_fontawesome_add_selected selected
|
|
|
|
name, options = Additionals.hash_remove_with_default(:name, options, :icon)
|
|
loader, options = Additionals.hash_remove_with_default(:loader, options, true)
|
|
html_options[:class], options = Additionals.hash_remove_with_default(:class, options, 'select2-fontawesome-field')
|
|
html_options[:style], options = Additionals.hash_remove_with_default(:style, options)
|
|
|
|
s = []
|
|
s << form.select(name,
|
|
options_for_select(AdditionalsFontAwesome.active_option_for_select(selected), selected),
|
|
options,
|
|
html_options)
|
|
|
|
s << additionals_fontawesome_loader(options, html_options) if loader
|
|
|
|
safe_join s
|
|
end
|
|
|
|
def additionals_fontawesome_add_selected(selected)
|
|
@selected_store ||= []
|
|
return if selected.blank?
|
|
|
|
@selected_store << selected
|
|
end
|
|
|
|
def additionals_fontawesome_default_select_width
|
|
'250px'
|
|
end
|
|
|
|
def additionals_fontawesome_loader(options, html_options = {})
|
|
html_options[:class] ||= 'select2-fontawesome-field'
|
|
options[:template_selection] = 'formatFontawesomeText'
|
|
options[:template_result] = 'formatFontawesomeText'
|
|
if options[:include_blank]
|
|
options[:placeholder] ||= l(:label_disabled)
|
|
options[:allow_clear] ||= true
|
|
end
|
|
options[:width] = additionals_fontawesome_default_select_width
|
|
|
|
render(layout: false,
|
|
partial: 'additionals/select2_ajax_call.js',
|
|
formats: [:js],
|
|
locals: { field_class: html_options[:class],
|
|
ajax_url: fontawesome_auto_completes_path(selected: @selected_store.join(',')),
|
|
options: options })
|
|
end
|
|
end
|