Class: Primer::Classify
- Inherits:
-
Object
- Object
- Primer::Classify
- Defined in:
- lib/primer/classify.rb
Constant Summary collapse
- MARGIN_DIRECTION_KEYS =
[:mt, :ml, :mb, :mr]
- SPACING_KEYS =
([:m, :my, :mx, :p, :py, :px, :pt, :pl, :pb, :pr] + MARGIN_DIRECTION_KEYS).freeze
- DIRECTION_KEY =
:direction- JUSTIFY_CONTENT_KEY =
:justify_content- ALIGN_ITEMS_KEY =
:align_items- DISPLAY_KEY =
:display- RESPONSIVE_KEYS =
([DISPLAY_KEY, DIRECTION_KEY, JUSTIFY_CONTENT_KEY, ALIGN_ITEMS_KEY, :col, :float] + SPACING_KEYS).freeze
- BREAKPOINTS =
["", "-sm", "-md", "-lg", "-xl"]
- CONCAT_KEYS =
Keys where we can simply translate { key: value } into “.key-value”
SPACING_KEYS + [:hide, :position, :v, :float, :col, :text, :box_shadow].freeze
- INVALID_CLASS_NAME_PREFIXES =
(["bg-", "color-", "text-", "d-", "v-align-", "wb-", "text-", "box-shadow-"] + CONCAT_KEYS.map { |k| "#{k}-" }).freeze
- COLOR_KEY =
:color- BG_KEY =
:bg- VERTICAL_ALIGN_KEY =
:vertical_align- WORD_BREAK_KEY =
:word_break- TEXT_KEYS =
[:text_align, :font_weight]
- FLEX_KEY =
:flex- FLEX_GROW_KEY =
:flex_grow- FLEX_SHRINK_KEY =
:flex_shrink- ALIGN_SELF_KEY =
:align_self- WIDTH_KEY =
:width- HEIGHT_KEY =
:height- BOX_SHADOW_KEY =
:box_shadow- VISIBILITY_KEY =
:visibility- BOOLEAN_MAPPINGS =
{ underline: { mappings: [ { value: true, css_class: "text-underline", }, { value: false, css_class: "no-underline", }, ], }, top: { mappings: [ { value: false, css_class: "top-0" } ] }, bottom: { mappings: [ { value: false, css_class: "bottom-0" } ] }, left: { mappings: [ { value: false, css_class: "left-0" } ] }, right: { mappings: [ { value: false, css_class: "right-0" } ] } }.freeze
- BORDER_KEYS =
[:border, :border_color].freeze
- BORDER_MARGIN_KEYS =
[:border_top, :border_bottom, :border_left, :border_right].freeze
- TYPOGRAPHY_KEYS =
[:font_size].freeze
- VALID_KEYS =
( CONCAT_KEYS + BOOLEAN_MAPPINGS.keys + BORDER_KEYS + BORDER_MARGIN_KEYS + TYPOGRAPHY_KEYS + TEXT_KEYS + [ COLOR_KEY, BG_KEY, DISPLAY_KEY, VERTICAL_ALIGN_KEY, WORD_BREAK_KEY, DIRECTION_KEY, JUSTIFY_CONTENT_KEY, ALIGN_ITEMS_KEY, FLEX_KEY, FLEX_GROW_KEY, FLEX_SHRINK_KEY, ALIGN_SELF_KEY, WIDTH_KEY, HEIGHT_KEY, BOX_SHADOW_KEY, VISIBILITY_KEY ] ).freeze
Class Method Summary collapse
Class Method Details
.call(classes: "", style: nil, **args) ⇒ Object
111 112 113 114 115 116 117 118 |
# File 'lib/primer/classify.rb', line 111 def call(classes: "", style: nil, **args) extracted_results = extract_hash(args) { class: [validated_class_names(classes), extracted_results[:classes]].compact.join(" ").presence, style: [extracted_results[:styles], style].compact.join("").presence, }.merge(extracted_results.except(:classes, :styles)) end |