app/components/solidus_admin/ui/toggletip/component.rb in solidus_admin-0.0.2 vs app/components/solidus_admin/ui/toggletip/component.rb in solidus_admin-0.1.0

- old
+ new

@@ -1,98 +1,21 @@ # frozen_string_literal: true class SolidusAdmin::UI::Toggletip::Component < SolidusAdmin::BaseComponent - # Icon size: 1rem - # Arrow size: 0.375rem - # Banner padding x: 0.75rem POSITIONS = { - up: { - arrow: %w[before:top-0 before:left-1/2 before:translate-y-[-50%] before:translate-x-[-50%]], - bubble: %w[translate-x-[calc(-50%+(1rem/2))] translate-y-[calc(0.375rem/2)]] + below: { + arrow: "before:top-0 before:left-1/2 before:translate-y-[-50%] before:translate-x-[-50%]", + bubble: "translate-x-[calc(-50%+(1rem/2))] translate-y-[calc(0.375rem/2)]" }, - up_right: { - arrow: %w[before:top-0 before:right-0 before:translate-y-[-50%]], - bubble: %w[translate-x-[calc(-100%+0.75rem+(1rem/2)+(0.375rem/2))] translate-y-[calc(0.375rem/2)]] + above: { + arrow: "before:bottom-0 before:left-1/2 before:translate-y-[50%] before:translate-x-[-50%]", + bubble: "translate-x-[calc(-50%+(1rem/2))] translate-y-[calc(-100%-1rem-(0.375rem/2))]" }, - right: { - arrow: %w[before:top-1/2 before:right-0 before:translate-y-[-50%] before:translate-x-[0.93rem]], - bubble: %w[translate-x-[calc(-100%+(-0.375rem/2))] translate-y-[calc(-50%-(1rem/2))]] - }, - down_right: { - arrow: %w[before:bottom-0 before:right-0 before:translate-y-[50%]], - bubble: %w[translate-x-[calc(-100%+0.75rem+(1rem/2)+(0.376rem/2))] translate-y-[calc(-100%-1rem-(0.375rem/2))]] - }, - down: { - arrow: %w[before:bottom-0 before:left-1/2 before:translate-y-[50%] before:translate-x-[-50%]], - bubble: %w[translate-x-[calc(-50%+(1rem/2))] translate-y-[calc(-100%-1rem-(0.375rem/2))]] - }, - down_left: { - arrow: %w[before:bottom-0 before:left-0 before:translate-y-[50%]], - bubble: %w[translate-x-[calc(-1rem/2)] translate-y-[calc(-100%-0.75rem-0.375rem)]] - }, - left: { - arrow: %w[before:top-1/2 before:left-0 before:translate-y-[-50%] before:translate-x-[-0.93rem]], - bubble: %w[translate-x-[calc(1rem+(0.375rem/2))] translate-y-[calc(-50%-(1rem/2))]] - }, - up_left: { - arrow: %w[before:top-0 before:left-0 before:translate-y-[-50%]], - bubble: %w[translate-x-[calc(-0.75rem+0.375rem)] translate-y-[calc(0.375rem/2)]] - }, - none: { - arrow: %w[before:hidden], - bubble: %w[translate-x-[calc(-50%+0.75rem)]] - } }.freeze - THEMES = { - light: { - icon: %w[fill-gray-500], - bubble: %w[text-gray-800 bg-gray-50] - }, - dark: { - icon: %w[fill-gray-800], - bubble: %w[text-white bg-gray-800] - } - }.freeze - - # @param text [String] The toggletip text - # @param position [Symbol] The position of the arrow in relation to the - # toggletip. The latter will be positioned accordingly in relation to the - # help icon. Defaults to `:up`. See `POSITIONS` for available options. - # @param theme [Symbol] The theme of the toggletip. Defaults to `:light`. See - # `THEMES` for available options. - def initialize(text:, position: :down, theme: :light, **attributes) + def initialize(text:, position: :above, **attributes) @text = text @position = position - @theme = theme @attributes = attributes - @attributes[:class] = [ - "relative inline-block", - @attributes[:class], - ].join(" ") - end - - def icon_theme_classes - THEMES.fetch(@theme)[:icon].join(" ") - end - - def bubble_theme_classes - THEMES.fetch(@theme)[:bubble].join(" ") - end - - def bubble_position_classes - POSITIONS.fetch(@position)[:bubble].join(" ") - end - - def bubble_arrow_pseudo_element - ( - [ - "before:content['']", - "before:absolute", - "before:w-[0.375rem]", - "before:h-[0.375rem]", - "before:rotate-45", - "before:bg-inherit", - ] + POSITIONS.fetch(@position)[:arrow] - ).join(" ") + @attributes[:class] = "relative inline-block #{@attributes[:class]}" end end