app/helpers/msip/bootstrap_helper.rb in msip-2.2.0.alfa3 vs app/helpers/msip/bootstrap_helper.rb in msip-2.2.0.beta1

- old
+ new

@@ -1,181 +1,192 @@ +# frozen_string_literal: true -# Ayudadores para Bootstrap 5 basados en los ayudadores para +# Ayudadores para Bootstrap 5 basados en los ayudadores para # Bootstrap 3 de la gema twitter-bootstrap-rails module Msip module BootstrapHelper - - # Genera grupo de menus - def grupo_menus(opciones={}, &bloque) - adclases = ['navbar-nav', 'me-auto'] + def grupo_menus(opciones = {}, &bloque) + adclases = ["navbar-nav", "me-auto"] if (opciones[:pull] && opciones[:pull] == :right) || - (opciones[:empujar] && opciones[:empujar] == :derecha) - adclases << 'ms-auto' - adclases.delete('me-auto') + (opciones[:empujar] && opciones[:empujar] == :derecha) + adclases << "ms-auto" + adclases.delete("me-auto") end r = content_tag(:ul, class: adclases, &bloque) - return r - end + r + end module_function :grupo_menus alias_method :menu_group, :grupo_menus module_function :menu_group # Genera opcion menú - def opcion_menu(opcionmenu, url, opciones={}) + def opcion_menu(opcionmenu, url, opciones = {}) cop = opciones.clone if cop[:desplegable] || cop[:dropdown] cop.delete(:desplegable) cop.delete(:dropdown) r = content_tag(:li) do - link_to opcionmenu, url, cop.merge({class: 'dropdown-item'}) + link_to(opcionmenu, url, cop.merge({ class: "dropdown-item" })) end else - r = content_tag(:li, class: 'nav-item') do - link_to opcionmenu, url, cop.merge({class: 'nav-link'}) + r = content_tag(:li, class: "nav-item") do + link_to(opcionmenu, url, cop.merge({ class: "nav-link" })) end end - return r - end + r + end module_function :opcion_menu alias_method :menu_item, :opcion_menu module_function :menu_item - # Opción de un menú dashboardkit - def opcion_menu_dk(opcionmenu, url, opciones={}) + def opcion_menu_dk(opcionmenu, url, opciones = {}) cop = opciones.clone if cop[:desplegable] || cop[:dropdown] cop.delete(:desplegable) cop.delete(:dropdown) - r = link_to opcionmenu, url, cop.merge({class: 'dropdown-item'}) + r = link_to(opcionmenu, url, cop.merge({ class: "dropdown-item" })) else - r = content_tag(:li, class: 'pc-item') do - link_to opcionmenu, url, cop.merge({class: 'pc-link'}) + r = content_tag(:li, class: "pc-item") do + link_to(opcionmenu, url, cop.merge({ class: "pc-link" })) end end - return r - end + r + end module_function :opcion_menu_dk # Genera grupo de menus def despliega_abajo(opcionmenu, &bloque) - opab = opcionmenu.gsub(' ', '_') - r = content_tag(:li, class: 'nav-item dropdown') do - link_to(opcionmenu, '#', class: 'nav-link dropdown-toggle', - id: 'navbarDropdown' + opab, - role: 'button', - 'data-bs-toggle' => 'dropdown', - 'aria-expanded' => false) + - content_tag(:ul, class: 'dropdown-menu dropdown-menu-light', - 'aria-labelledby' => 'navbarDropdown' + opab, &bloque) + opab = opcionmenu.gsub(" ", "_") + r = content_tag(:li, class: "nav-item dropdown") do + link_to( + opcionmenu, + "#", + class: "nav-link dropdown-toggle", + id: "navbarDropdown" + opab, + role: "button", + "data-bs-toggle" => "dropdown", + "aria-expanded" => false, + ) + + content_tag( + :ul, + class: "dropdown-menu dropdown-menu-light", + "aria-labelledby" => "navbarDropdown" + opab, + &bloque + ) end - return r - end + r + end module_function :despliega_abajo alias_method :drop_down, :despliega_abajo module_function :drop_down - - def despliega_abajo_dk(opcionmenu, url, opciones={}, &bloque) + def despliega_abajo_dk(opcionmenu, url, opciones = {}, &bloque) copiaop = opciones - opab = opcionmenu.gsub(' ', '_') - maticon = 'home' - if opciones[:maticon] + opab = opcionmenu.gsub(" ", "_") + maticon = "home" + if opciones[:maticon] maticon = opciones[:maticon] copiaop.delete(:maticon) end - claseli = 'pc-item' - flecha = '' - if !opciones.keys.include?(:sinflecha) - flecha = content_tag(:span, class: 'pc-arrow') do - content_tag(:i, "data-feather" => 'chevron-right') do + claseli = "pc-item" + flecha = "" + if opciones.keys.exclude?(:sinflecha) + flecha = content_tag(:span, class: "pc-arrow") do + content_tag(:i, "data-feather" => "chevron-right") do end end - claseli += ' pc-hasmenu' - else + claseli += " pc-hasmenu" + else copiaop.delete(:sinflecha) end leyenda = false if opciones[:leyenda] leyenda = true - claseli += ' pc-caption' + claseli += " pc-caption" end r = content_tag(:li, class: claseli) do if leyenda - #content_tag(:span, class: 'pc-micon') do - content_tag(:label) do - opcionmenu - end - #end + # content_tag(:span, class: 'pc-micon') do + content_tag(:label) do + opcionmenu + end + # end else link_to( - url, copiaop.merge({class: 'pc-link', - id: 'navbarDropdown' + opab}) + url, copiaop.merge({ + class: "pc-link", + id: "navbarDropdown" + opab, + }) ) do - s = '' - if !bloque.nil? + unless bloque.nil? end - content_tag(:span, class: 'pc-micon') do - content_tag(:i, class: 'material-icons-two-tone') do + content_tag(:span, class: "pc-micon") do + content_tag(:i, class: "material-icons-two-tone") do maticon end - end + content_tag(:span, class: 'pc-mtext') do + end + content_tag(:span, class: "pc-mtext") do opcionmenu end + flecha - end + content_tag(:ul, class: 'pc-submenu', &bloque) + end + content_tag(:ul, class: "pc-submenu", &bloque) end end - return r - end + r + end module_function :opcion_menu_dk - # Genera grupo de menus - def grupo_menus_dk(opciones={}, &bloque) - adclases = ['pc-navbar'] + def grupo_menus_dk(opciones = {}, &bloque) + adclases = ["pc-navbar"] r = content_tag(:ul, class: adclases, &bloque) - return r - end + r + end module_function :grupo_menus_dk - - def barra_navegacion(opciones, &bloque) - r = content_tag(:nav, - class: 'navbar navbar-expand-lg navbar-light bg-light') do - content_tag(:div, - class: 'container-fluid') do - r2 = '' - if opciones[:marca] || opciones[:brand] + r = content_tag( + :nav, + class: "navbar navbar-expand-lg navbar-light bg-light", + ) do + content_tag( + :div, + class: "container-fluid", + ) do + r2 = "" + if opciones[:marca] || opciones[:brand] r2 += link_to( opciones[:marca] ? opciones[:marca] : opciones[:brand], - opciones[:enlace_marca] ? opciones[:enlace_marca] : - opciones[:brand_link], - class: 'navbar-brand') + opciones[:enlace_marca] ? opciones[:enlace_marca] : opciones[:brand_link], + class: "navbar-brand", + ) end r2 += content_tag( - :button, - class: 'navbar-toggler', - type: 'button', - 'data-bs-toggle' => 'collapse', - 'data-bs-target' => '#navbarSupportedContent', - 'aria-controls' => 'navbarSupportedContent', - 'aria-expanded' => false, - 'aria-label' => 'Intercambiar navegación' + :button, + class: "navbar-toggler", + type: "button", + "data-bs-toggle" => "collapse", + "data-bs-target" => "#navbarSupportedContent", + "aria-controls" => "navbarSupportedContent", + "aria-expanded" => false, + "aria-label" => "Intercambiar navegación", ) do - content_tag(:span, '', class: 'navbar-toggler-icon') + content_tag(:span, "", class: "navbar-toggler-icon") end - r2 += content_tag(:div, class: 'collapse navbar-collapse', - id: 'navbarSupportedContent', &bloque) + r2 += content_tag( + :div, + class: "collapse navbar-collapse", + id: "navbarSupportedContent", + &bloque + ) r2.html_safe end end r.html_safe end @@ -183,34 +194,37 @@ alias_method :nav_bar, :barra_navegacion module_function :nav_bar def anuncios_bootstrap - r = '' - flash.each do |tipo, mensaje| - case tipo.to_sym + r = "".dup + flash.each do |tipo, mensaje| + tal = case tipo.to_sym when :success, :notice - tal = :success + :success else - tal = :danger + :danger end r << content_tag( - :div, class: "alert alert-#{tal.to_s} "\ - "alert-dismissible fade show", - role: :alert + :div, + class: "alert alert-#{tal} "\ + "alert-dismissible fade show", + role: :alert, ) do - content_tag(:span, mensaje) + + content_tag(:span, mensaje) + content_tag( - :button, type: :button, class: 'btn-close', - 'data-bs-dismiss' => :alert, - 'aria-label' => "Close" + :button, + type: :button, + class: "btn-close", + "data-bs-dismiss" => :alert, + "aria-label" => "Close", ) do end end - end + end - return r.html_safe + r.html_safe end module_function :anuncios_bootstrap alias_method :bootstrap_flash, :anuncios_bootstrap module_function :bootstrap_flash @@ -220,88 +234,88 @@ # @param idit Id del item # @param titulo Titulo del item # @param expandido booleano para que inicie expandido # @param bloque Que se presenta al expandir def item_acordeon_bs( - acid, idit, titulo, expandido = false, opciones = {}, &bloque) - r = content_tag( - :div, - class: 'accordion-item ' + opciones.fetch("clase_accordion-item", '') + acid, idit, titulo, expandido = false, opciones = {}, &bloque + ) + content_tag( + :div, + class: "accordion-item " + opciones.fetch("clase_accordion-item", ""), ) do content_tag( - :h5, - class: 'accordion-header mb-0 ' + opciones.fetch( - "clase_accordion-header", ''), - id: 'enc_' + idit, - style: opciones.fetch('estilo_accordion-header', nil) - ) do + :h5, + class: "accordion-header mb-0 " + opciones.fetch( + "clase_accordion-header", "" + ), + id: "enc_" + idit, + style: opciones.fetch("estilo_accordion-header", nil), + ) do content_tag( - :button, - class: 'accordion-button ' + ( - expandido ? '' : 'collapsed ' + :button, + class: "accordion-button " + ( + expandido ? "" : "collapsed " ) + opciones.fetch( - "clase_accordion-button", '' - ), - type: 'button', - 'data-bs-toggle' => 'collapse', - 'data-bs-target' => '#' + idit, - 'aria-expanded' => (expandido ? 'true' : 'false'), - 'aria-controls' => idit, + "clase_accordion-button", "" + ), + type: "button", + "data-bs-toggle" => "collapse", + "data-bs-target" => "#" + idit, + "aria-expanded" => (expandido ? "true" : "false"), + "aria-controls" => idit, style: opciones.fetch("estilo_accordion-button", nil), - id: 'enc_' + idit - ) do + id: "enc_" + idit, + ) do titulo end - end + - content_tag( - :div, - class: 'accordion-collapse collapse ' + ( - expandido ? 'show ' : '' - ) + ( - opciones.fetch("clase_accordion-collapse", '') - ), - "aria-labelledby" => "enc_#{idit}", - "data-bs-parent" => acid, - id: idit - ) do + end + content_tag( - :div, - class: 'accordion-body ' + ( - opciones.fetch("clase_accordion-body", '') - ), - style: opciones.fetch("estilo_accordion-body",nil) - ) do - yield bloque + :div, + class: "accordion-collapse collapse " + ( + expandido ? "show " : "" + ) + + opciones.fetch("clase_accordion-collapse", ""), + "aria-labelledby" => "enc_#{idit}", + "data-bs-parent" => acid, + id: idit, + ) do + content_tag( + :div, + class: "accordion-body " + + opciones.fetch("clase_accordion-body", ""), + style: opciones.fetch("estilo_accordion-body", nil), + ) do + yield bloque + end end - end end end module_function :item_acordeon_bs # Encabezado de pestaña. Debe tener un contenido_pestaña_bs # Va dentro de un <ul class="nav nav-tabs" role="tablist"> # @param idit Id del item # @param titulo Titulo del item # @param elegida booleano para que inicie enfocado # @param bloque Que se presenta al expandir - def item_nav_pestaña_bs(idit, titulo, elegida = false, - clase_boton = '', &bloque) - r = content_tag( - :li, - class: 'nav-item', - role: 'presentation' - ) do + def item_nav_pestaña_bs(idit, titulo, elegida = false, + clase_boton = "", &bloque) + content_tag( + :li, + class: "nav-item", + role: "presentation", + ) do content_tag( :button, - class: "nav-link #{clase_boton} #{elegida ? 'active' : ''}", + class: "nav-link #{clase_boton} #{elegida ? "active" : ""}", id: "#{idit}-pestana", - "aria-selected" => (elegida ? 'true' : 'false'), + "aria-selected" => (elegida ? "true" : "false"), "aria-controls" => idit, role: "tab", "data-bs-toggle" => "tab", - "data-bs-target" => '#' + idit, - type: "button" + "data-bs-target" => "#" + idit, + type: "button", ) do titulo end end end @@ -313,14 +327,14 @@ # @param elegida booleano para que inicie enfocada # @param bloque Que se presenta al expandir def contenido_pestaña_bs(idit, elegida = false, &bloque) content_tag( :div, - class: "tab-pane fade #{elegida ? 'show active' : ''}", + class: "tab-pane fade #{elegida ? "show active" : ""}", role: "tabpanel", id: idit, - "aria-labelledby" => idit + "-pestana" + "aria-labelledby" => idit + "-pestana", ) do yield bloque end end module_function :contenido_pestaña_bs @@ -329,181 +343,181 @@ # @param idit Id del item # @param clase_div Clase para div envolvente # @param valor Valor de la caja de verificacion true o false # @param at_nombre Atributo nombre para el elemento input # @param etiqueta Titulo por presentar - # @param opciones Si se presentará ayuda emergente poner el + # @param opciones Si se presentará ayuda emergente poner el # texto en `ayuda_emergente: el texto` - def caja_de_verificacion_bs(idit, clase_div, valor, at_nombre, - etiqueta, opciones = {}) + def caja_de_verificacion_bs(idit, clase_div, valor, at_nombre, + etiqueta, opciones = {}) content_tag( :div, - class: "form-check" # optional #{clase_div}" + class: "form-check", # optional #{clase_div}" ) do at_input2 = { - "data-toggle" => 'tooltip', - class: 'form-check-input', + "data-toggle" => "tooltip", + class: "form-check-input", type: "checkbox", name: at_nombre, id: idit, - "data-bs-original-title" => opciones.fetch('ayuda_emergente',nil), - "aria-label" => opciones.fetch('ayuda_emergente', nil), - style: opciones.fetch('estilo_input', nil) + "data-bs-original-title" => opciones.fetch("ayuda_emergente", nil), + "aria-label" => opciones.fetch("ayuda_emergente", nil), + style: opciones.fetch("estilo_input", nil), } if valor - at_input2[:checked]='on' + at_input2[:checked] = "on" end hidden_field_tag( # Truco para que quede en 0 cuando no este chequeada - # que llamamos comportamiento rails y es opouesto - # al comportamiento estándar de no enviar - # parámetro de campos no marcados. - at_nombre, '0' + # que llamamos comportamiento rails y es opouesto + # al comportamiento estándar de no enviar + # parámetro de campos no marcados. + at_nombre, "0" ) + text_field_tag( at_nombre, nil, - at_input2 + at_input2, ) + content_tag( :label, - class: 'form-check-label', - for: idit + class: "form-check-label", + for: idit, ) do etiqueta end end # div end module_function :caja_de_verificacion_bs - def barra_navegacion_prosidebar(opciones, &bloque) - fondo = ''.html_safe + fondo = "".html_safe if opciones[:imagen_barra_lateral] fondo = content_tag( - :div, class: 'image-wrapper' - ) do + :div, class: "image-wrapper" + ) do content_tag( - :img, src: opciones[:imagen_barra_lateral], - alt: 'sidebar background' + :img, + src: opciones[:imagen_barra_lateral], + alt: "sidebar background", ) end end titulo = opciones[:titulo] ? opciones[:titulo] : Msip.titulo spantitulo = content_tag( - :span, style: 'text-transform: uppercase;'\ - ' font-size: 15px;'\ - 'letter-spacing: 3px; '\ - 'font-weight: bold;' + :span, style: "text-transform: uppercase;"\ + " font-size: 15px;"\ + "letter-spacing: 3px; "\ + "font-weight: bold;" ) do - if opciones[:enlace_marca] then - link_to(titulo, - opciones[:enlace_marca], - class: 'navbar-brand') + if opciones[:enlace_marca] + link_to( + titulo, + opciones[:enlace_marca], + class: "navbar-brand", + ) else titulo end end colapsada = "" if Msip.prosidebar_colapsada colapsada = "collapsed" end r = content_tag( - :aside, id: 'sidebar', - class: "sidebar break-point-lg has-bg-image #{colapsada}" + :aside, + id: "sidebar", + class: "sidebar break-point-lg has-bg-image #{colapsada}", ) do fondo + + content_tag( + :div, class: "sidebar-layout" + ) do + r2 = content_tag(:div, class: "sidebar-header") do + spantitulo + end + r2 += content_tag(:div, id: "navbarSupportedContent", &bloque) + r2 += content_tag(:div, class: "sidebar-footer") do + content_tag(:a, id: "btn-collapse", href: "#") do + "<i class='ri-swap-box-fill ri-xl'></i>".html_safe + end + end + r2.html_safe + end # sidebar-layout + end + # aside content_tag( - :div, class: 'sidebar-layout' - ) do - r2 = content_tag(:div, class: 'sidebar-header') do - spantitulo - end - r2 += content_tag(:div, id: 'navbarSupportedContent', &bloque) - r2 += content_tag(:div, class: 'sidebar-footer') do - content_tag(:a, id: 'btn-collapse', href: '#') do - "<i class='ri-swap-box-fill ri-xl'></i>".html_safe - end - end - r2.html_safe - end # sidebar-layout - end + # aside - content_tag( - :a, id: 'btn-toggle', href: '#', - class: 'sidebar-toggler break-point-lg' - ) do - "<i class='ri-swap-box-fill ri-xl'></i>".html_safe - end + :a, + id: "btn-toggle", + href: "#", + class: "sidebar-toggler break-point-lg", + ) do + "<i class='ri-swap-box-fill ri-xl'></i>".html_safe + end r.html_safe end module_function :barra_navegacion_prosidebar - # Genera grupo de menus prosidebar - def grupo_menus_prosidebar(opciones={}, &bloque) - return content_tag( + def grupo_menus_prosidebar(opciones = {}, &bloque) + content_tag( :div, - class: "sidebar-content" + class: "sidebar-content", ) do content_tag( :nav, - class: "menu open-current-submenu" + class: "menu open-current-submenu", ) do content_tag(:ul, &bloque) end end - end + end module_function :grupo_menus_prosidebar - # Genera grupo de menus def despliega_abajo_prosidebar( - opcionmenu, iconomenu=nil, iconoexp=nil, &bloque) - ia = ''.html_safe + opcionmenu, iconomenu = nil, iconoexp = nil, &bloque + ) + ia = "".html_safe if iconomenu - ia = content_tag(:span, class: 'menu-icon') do + ia = content_tag(:span, class: "menu-icon") do content_tag(:i, class: iconomenu.to_s) do end end end - return content_tag(:li, class: 'menu-item sub-menu') do - link_to('#') do - ia + content_tag(:span, class: 'menu-title') do + content_tag(:li, class: "menu-item sub-menu") do + link_to("#") do + ia + content_tag(:span, class: "menu-title") do opcionmenu - end + content_tag(:span, class: 'menu-suffix') do + end + content_tag(:span, class: "menu-suffix") do if iconoexp iconoexp.html_safe else - ''.html_safe + "".html_safe end end end + - content_tag(:div, class: 'sub-menu-list') do - content_tag(:ul,&bloque) - end + content_tag(:div, class: "sub-menu-list") do + content_tag(:ul, &bloque) + end end - end + end module_function :despliega_abajo_prosidebar - # Genera opcion menú - def opcion_menu_prosidebar(opcionmenu, url, opciones={}) - ia = ''.html_safe + def opcion_menu_prosidebar(opcionmenu, url, opciones = {}) + ia = "".html_safe if opciones[:icono] - ia = content_tag(:span, class: 'menu-icon') do + ia = content_tag(:span, class: "menu-icon") do content_tag(:i, class: opciones[:icono].to_s) do end end end - return content_tag(:li, class: 'menu-item') do + content_tag(:li, class: "menu-item") do link_to(url) do - ia + content_tag(:span, class: 'menu-title') do + ia + content_tag(:span, class: "menu-title") do opcionmenu end end end - end + end module_function :opcion_menu_prosidebar - - - end end