Class: GovukPublishingComponents::Presenters::ImageCardHelper

Inherits:
Object
  • Object
show all
Includes:
ActionView::Context, ActionView::Helpers
Defined in:
lib/govuk_publishing_components/presenters/image_card_helper.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(local_assigns, brand_helper) ⇒ ImageCardHelper

Returns a new instance of ImageCardHelper.



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/govuk_publishing_components/presenters/image_card_helper.rb', line 9

def initialize(local_assigns, brand_helper)
  @href = local_assigns[:href]
  @extra_details = local_assigns[:extra_details] || []
  @image_src = local_assigns[:image_src]
  @image_alt = local_assigns[:image_alt] || ""
  @youtube_video_alt = local_assigns[:youtube_video_alt]
  @image_loading = local_assigns[:image_loading] || "auto"
  @srcset = local_assigns[:srcset] || nil
  @sizes = local_assigns[:sizes] || nil
  @image_loading = local_assigns[:image_loading] || "auto"
  @context = local_assigns[:context]
  @description = local_assigns[:description]
  @large = local_assigns[:large]
  @two_thirds = local_assigns[:two_thirds] || false
  @large_font_size_mobile = local_assigns[:large_font_size_mobile] || false
  @heading_text = local_assigns[:heading_text]
  @extra_details_no_indent = local_assigns[:extra_details_no_indent]
  @metadata = local_assigns[:metadata]
  @lang = local_assigns[:lang]
  @youtube_video_id = local_assigns[:youtube_video_id] || nil

  @brand_helper = brand_helper
end

Instance Attribute Details

#extra_detailsObject (readonly)

Returns the value of attribute extra_details.



7
8
9
# File 'lib/govuk_publishing_components/presenters/image_card_helper.rb', line 7

def extra_details
  @extra_details
end

#extra_details_no_indentObject (readonly)

Returns the value of attribute extra_details_no_indent.



7
8
9
# File 'lib/govuk_publishing_components/presenters/image_card_helper.rb', line 7

def extra_details_no_indent
  @extra_details_no_indent
end

#heading_textObject (readonly)

Returns the value of attribute heading_text.



7
8
9
# File 'lib/govuk_publishing_components/presenters/image_card_helper.rb', line 7

def heading_text
  @heading_text
end

#image_loadingObject (readonly)

Returns the value of attribute image_loading.



7
8
9
# File 'lib/govuk_publishing_components/presenters/image_card_helper.rb', line 7

def image_loading
  @image_loading
end

#image_srcObject (readonly)

Returns the value of attribute image_src.



7
8
9
# File 'lib/govuk_publishing_components/presenters/image_card_helper.rb', line 7

def image_src
  @image_src
end

#langObject (readonly)

Returns the value of attribute lang.



7
8
9
# File 'lib/govuk_publishing_components/presenters/image_card_helper.rb', line 7

def lang
  @lang
end

#large_font_size_mobileObject (readonly)

Returns the value of attribute large_font_size_mobile.



7
8
9
# File 'lib/govuk_publishing_components/presenters/image_card_helper.rb', line 7

def large_font_size_mobile
  @large_font_size_mobile
end

#metadataObject (readonly)

Returns the value of attribute metadata.



7
8
9
# File 'lib/govuk_publishing_components/presenters/image_card_helper.rb', line 7

def 
  @metadata
end

#two_thirdsObject (readonly)

Returns the value of attribute two_thirds.



7
8
9
# File 'lib/govuk_publishing_components/presenters/image_card_helper.rb', line 7

def two_thirds
  @two_thirds
end

#youtube_video_idObject (readonly)

Returns the value of attribute youtube_video_id.



7
8
9
# File 'lib/govuk_publishing_components/presenters/image_card_helper.rb', line 7

def youtube_video_id
  @youtube_video_id
end

Instance Method Details

#contextObject



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/govuk_publishing_components/presenters/image_card_helper.rb', line 83

def context
  return unless @context

  (:p, class: "gem-c-image-card__context") do
    if @context[:date]
      date = (:time, l(@context[:date], format: "%e %B %Y"), datetime: @context[:date].iso8601, lang: "en")
      dash = (:span, "", 'aria-hidden': true)

      if @context[:text]
        date.concat(dash).concat(@context[:text])
      else
        date
      end
    else
      @context[:text]
    end
  end
end

#descriptionObject



102
103
104
105
106
# File 'lib/govuk_publishing_components/presenters/image_card_helper.rb', line 102

def description
  return (:div, @description, class: "gem-c-image-card__description gem-c-image-card__description--large-font-size-mobile") if @description && large_mobile_font_size?

  (:div, @description, class: "gem-c-image-card__description") if @description
end

#hrefObject



33
34
35
36
37
# File 'lib/govuk_publishing_components/presenters/image_card_helper.rb', line 33

def href
  return youtube_href if @youtube_video_id

  @href
end

#imageObject



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/govuk_publishing_components/presenters/image_card_helper.rb', line 59

def image
  classes = %w[gem-c-image-card__image-wrapper]
  classes << "gem-c-image-card__image-wrapper--one-third" if @two_thirds
  height = 200
  width = 300
  height = 90 if @two_thirds
  width = 90 if @two_thirds

  if @image_src
    (:figure, class: classes) do
      image_tag(
        @image_src,
        class: "gem-c-image-card__image",
        alt: @image_alt,
        loading: @image_loading,
        sizes: @sizes,
        srcset: @srcset,
        height:,
        width:,
      )
    end
  end
end

#largeObject



39
40
41
42
43
44
# File 'lib/govuk_publishing_components/presenters/image_card_helper.rb', line 39

def large
  # if youtube video, we don't want to use
  # the small variant, large will be always
  # true if a youtube_video_id is supplied
  @youtube_video_id || @large
end

#large_mobile_font_size?Boolean

Returns:

  • (Boolean)


46
47
48
49
50
51
# File 'lib/govuk_publishing_components/presenters/image_card_helper.rb', line 46

def large_mobile_font_size?
  # allow the font-size to be 19px on mobile
  # for the two-thirds varation of the
  # image card component
  @two_thirds && @large_font_size_mobile
end

#mediaObject



53
54
55
56
57
# File 'lib/govuk_publishing_components/presenters/image_card_helper.rb', line 53

def media
  return youtube_link if @youtube_video_id

  image
end

#youtube_hrefObject



108
109
110
# File 'lib/govuk_publishing_components/presenters/image_card_helper.rb', line 108

def youtube_href
  "https://www.youtube.com/watch?v=#{@youtube_video_id}"
end


128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# File 'lib/govuk_publishing_components/presenters/image_card_helper.rb', line 128

def youtube_link
  (
    :figure,
    class: "gem-c-image-card__image-wrapper gem-c-image-card__image-wrapper--youtube-embed",
  ) do
    (:div) do
      link_to(
        href,
        {
          class: "govuk-body govuk-link gem-c-image-card__youtube-thumbnail-container js-youtube-card-embed",
        },
      ) do
        youtube_thumbnail
      end
    end
  end
end

#youtube_thumbnailObject



116
117
118
119
120
121
122
123
124
125
126
# File 'lib/govuk_publishing_components/presenters/image_card_helper.rb', line 116

def youtube_thumbnail
  thumbnail = (:div, class: "gem-c-image-card__youtube-thumbnail-image-container") do
    image_tag(
      youtube_thumbnail_url,
      class: "gem-c-image-card__image gem-c-image-card__youtube-thumbnail-image",
      alt: "",
      loading: @image_loading,
    )
  end
  thumbnail + (:figcaption, @youtube_video_alt, class: "gem-c-image-card__youtube-thumbnail-container-text govuk-link #{@brand_helper.color_class}")
end

#youtube_thumbnail_urlObject



112
113
114
# File 'lib/govuk_publishing_components/presenters/image_card_helper.rb', line 112

def youtube_thumbnail_url
  "https://img.youtube.com/vi/#{@youtube_video_id}/maxresdefault.jpg"
end