crown_marketplace_utils 0.1.0.beta.6 → 0.1.0.beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper/accordion.rb +91 -89
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper/back_link.rb +24 -22
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper/breadcrumbs.rb +56 -54
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper/button.rb +109 -107
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper/details.rb +33 -31
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper/error_message.rb +53 -46
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper/field/character_count.rb +144 -142
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper/field/checkboxes.rb +176 -174
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper/field/date_input.rb +126 -124
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper/field/file_upload.rb +75 -73
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper/field/input.rb +137 -135
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper/field/radios.rb +176 -174
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper/field/select.rb +111 -109
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper/field/textarea.rb +86 -84
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper/field.rb +181 -179
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper/fieldset.rb +56 -54
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper/form_group.rb +37 -35
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper/header.rb +142 -140
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper/hint.rb +25 -23
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper/label.rb +69 -67
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper/notification_banner.rb +121 -119
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper/pagination.rb +290 -288
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper/step_by_step_navigation.rb +187 -185
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper/tag.rb +29 -27
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper/warning_text.rb +39 -37
- data/lib/crown_marketplace_utils/helpers/gov_uk_helper.rb +31 -29
- data/lib/crown_marketplace_utils/version.rb +1 -1
- metadata +2 -2
@@ -2,337 +2,339 @@
|
|
2
2
|
|
3
3
|
require 'action_view'
|
4
4
|
|
5
|
-
module CrownMarketplaceUtils
|
6
|
-
module
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
5
|
+
module CrownMarketplaceUtils
|
6
|
+
module Helpers
|
7
|
+
module GovUkHelper
|
8
|
+
# rubocop:disable Metrics/ModuleLength
|
9
|
+
|
10
|
+
# = GOV.UK Pagination
|
11
|
+
#
|
12
|
+
# This helper is used for generating the pagination component from the
|
13
|
+
# {https://design-system.service.gov.uk/components/pagination GDS - Components - Pagination}
|
14
|
+
|
15
|
+
module Pagination
|
16
|
+
include ActionView::Context
|
17
|
+
include ActionView::Helpers::TagHelper
|
18
|
+
include ActionView::Helpers::TextHelper
|
19
|
+
include ActionView::Helpers::UrlHelper
|
20
|
+
|
21
|
+
# Generates the HTML for the GOV.UK Pagination component
|
22
|
+
#
|
23
|
+
# @param (see _govuk_pagination)
|
24
|
+
#
|
25
|
+
# @option (see _govuk_pagination)
|
26
|
+
#
|
27
|
+
# @return [ActiveSupport::SafeBuffer] the HTML for the GOV.UK Pagination
|
28
|
+
# which can then be rendered on the page
|
29
|
+
|
30
|
+
def govuk_pagination(**govuk_pagination_options)
|
31
|
+
_govuk_pagination(**govuk_pagination_options) do |block_is_level|
|
32
|
+
capture do
|
33
|
+
concat(govuk_pagination_previous(block_is_level, form: govuk_pagination_options[:form], **govuk_pagination_options[:previous])) if govuk_pagination_options[:previous]
|
34
|
+
concat(govuk_pagination_items(govuk_pagination_options[:items], form: govuk_pagination_options[:form])) if govuk_pagination_options[:items]
|
35
|
+
concat(govuk_pagination_next(block_is_level, form: govuk_pagination_options[:form], **govuk_pagination_options[:next])) if govuk_pagination_options[:next]
|
36
|
+
end
|
35
37
|
end
|
36
38
|
end
|
37
|
-
end
|
38
|
-
|
39
|
-
private
|
40
|
-
|
41
|
-
# Wrapper method used by {govuk_pagination}
|
42
|
-
#
|
43
|
-
# @param govuk_pagination_options [Hash] options that will be used in customising the HTML
|
44
|
-
#
|
45
|
-
# @option govuk_pagination_options [ActionView::Helpers::FormBuilder] :form (nil) optional form builder used to create pagination buttons
|
46
|
-
# @option govuk_pagination_options [String] :classes additional CSS classes for the pagination HTML
|
47
|
-
# @option govuk_pagination_options [Array] :items an array of items for the pagination (see: {govuk_pagination_items})
|
48
|
-
# @option govuk_pagination_options [Hash] :previous the previous link (see: {govuk_pagination_previous})
|
49
|
-
# @option govuk_pagination_options [Hash] :next the next link (see: {govuk_pagination_next})
|
50
|
-
# @option govuk_pagination_options [Hash] :attributes ({role: 'navigation', aria: { label: 'results' }})
|
51
|
-
# any additional attributes that will added as part of the HTML
|
52
|
-
#
|
53
|
-
# @yield the pagination HTML generated by {govuk_pagination}
|
54
|
-
#
|
55
|
-
# @yieldparam block_is_level [Boolean] flag to indicate if there are no items
|
56
|
-
#
|
57
|
-
# @return [ActiveSupport::SafeBuffer] the HTML for the Pagination
|
58
|
-
# which is used in {govuk_pagination}
|
59
|
-
|
60
|
-
def _govuk_pagination(**govuk_pagination_options)
|
61
|
-
govuk_pagination_options[:attributes] ||= {}
|
62
|
-
govuk_pagination_options[:attributes][:class] = "govuk-pagination #{govuk_pagination_options[:classes]}".rstrip
|
63
|
-
|
64
|
-
block_is_level = govuk_pagination_options[:items].blank? && (govuk_pagination_options[:next].present? || govuk_pagination_options[:previous].present?)
|
65
|
-
|
66
|
-
govuk_pagination_options[:attributes][:class] << ' govuk-pagination--block' if block_is_level
|
67
39
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
40
|
+
private
|
41
|
+
|
42
|
+
# Wrapper method used by {govuk_pagination}
|
43
|
+
#
|
44
|
+
# @param govuk_pagination_options [Hash] options that will be used in customising the HTML
|
45
|
+
#
|
46
|
+
# @option govuk_pagination_options [ActionView::Helpers::FormBuilder] :form (nil) optional form builder used to create pagination buttons
|
47
|
+
# @option govuk_pagination_options [String] :classes additional CSS classes for the pagination HTML
|
48
|
+
# @option govuk_pagination_options [Array] :items an array of items for the pagination (see: {govuk_pagination_items})
|
49
|
+
# @option govuk_pagination_options [Hash] :previous the previous link (see: {govuk_pagination_previous})
|
50
|
+
# @option govuk_pagination_options [Hash] :next the next link (see: {govuk_pagination_next})
|
51
|
+
# @option govuk_pagination_options [Hash] :attributes ({role: 'navigation', aria: { label: 'results' }})
|
52
|
+
# any additional attributes that will added as part of the HTML
|
53
|
+
#
|
54
|
+
# @yield the pagination HTML generated by {govuk_pagination}
|
55
|
+
#
|
56
|
+
# @yieldparam block_is_level [Boolean] flag to indicate if there are no items
|
57
|
+
#
|
58
|
+
# @return [ActiveSupport::SafeBuffer] the HTML for the Pagination
|
59
|
+
# which is used in {govuk_pagination}
|
60
|
+
|
61
|
+
def _govuk_pagination(**govuk_pagination_options)
|
62
|
+
govuk_pagination_options[:attributes] ||= {}
|
63
|
+
govuk_pagination_options[:attributes][:class] = "govuk-pagination #{govuk_pagination_options[:classes]}".rstrip
|
64
|
+
|
65
|
+
block_is_level = govuk_pagination_options[:items].blank? && (govuk_pagination_options[:next].present? || govuk_pagination_options[:previous].present?)
|
66
|
+
|
67
|
+
govuk_pagination_options[:attributes][:class] << ' govuk-pagination--block' if block_is_level
|
68
|
+
|
69
|
+
govuk_pagination_options[:attributes].merge!({ role: 'navigation' })
|
70
|
+
(govuk_pagination_options[:attributes][:aria] ||= {})[:label] ||= 'results'
|
71
|
+
|
72
|
+
tag.nav(**govuk_pagination_options[:attributes]) do
|
73
|
+
yield(block_is_level)
|
74
|
+
end
|
73
75
|
end
|
74
|
-
end
|
75
|
-
|
76
|
-
# Generates the previous link for {govuk_pagination}
|
77
|
-
#
|
78
|
-
# @param (see govuk_pagination_previous_content)
|
79
|
-
#
|
80
|
-
# @option (see govuk_pagination_previous_content)
|
81
|
-
#
|
82
|
-
# @return [ActiveSupport::SafeBuffer] the HTML for the previous link which is used in {govuk_pagination}
|
83
|
-
|
84
|
-
def govuk_pagination_previous(block_is_level, **govuk_pagination_previous_options)
|
85
|
-
govuk_pagination_previous_options[:attributes] ||= {}
|
86
|
-
govuk_pagination_previous_options[:attributes][:class] = "govuk-link govuk-pagination__link #{'pagination--button_as_link' if govuk_pagination_previous_options[:form]}".rstrip
|
87
|
-
govuk_pagination_previous_options[:attributes][:rel] = 'prev'
|
88
|
-
|
89
|
-
pagination_previous_content = govuk_pagination_previous_content(block_is_level, govuk_pagination_previous_options)
|
90
76
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
77
|
+
# Generates the previous link for {govuk_pagination}
|
78
|
+
#
|
79
|
+
# @param (see govuk_pagination_previous_content)
|
80
|
+
#
|
81
|
+
# @option (see govuk_pagination_previous_content)
|
82
|
+
#
|
83
|
+
# @return [ActiveSupport::SafeBuffer] the HTML for the previous link which is used in {govuk_pagination}
|
84
|
+
|
85
|
+
def govuk_pagination_previous(block_is_level, **govuk_pagination_previous_options)
|
86
|
+
govuk_pagination_previous_options[:attributes] ||= {}
|
87
|
+
govuk_pagination_previous_options[:attributes][:class] = "govuk-link govuk-pagination__link #{'pagination--button_as_link' if govuk_pagination_previous_options[:form]}".rstrip
|
88
|
+
govuk_pagination_previous_options[:attributes][:rel] = 'prev'
|
89
|
+
|
90
|
+
pagination_previous_content = govuk_pagination_previous_content(block_is_level, govuk_pagination_previous_options)
|
91
|
+
|
92
|
+
tag.div(class: 'govuk-pagination__prev') do
|
93
|
+
if govuk_pagination_previous_options[:form]
|
94
|
+
govuk_pagination_previous_options[:form].button(pagination_previous_content, **govuk_pagination_previous_options[:attributes])
|
95
|
+
else
|
96
|
+
link_to(pagination_previous_content, govuk_pagination_previous_options[:href], **govuk_pagination_previous_options[:attributes])
|
97
|
+
end
|
96
98
|
end
|
97
99
|
end
|
98
|
-
end
|
99
|
-
|
100
|
-
# Used by {govuk_pagination_previous}
|
101
|
-
# to generate the previous link content
|
102
|
-
#
|
103
|
-
# @param block_is_level [Boolean] when there are no items, this will be true and will add extra classes
|
104
|
-
# to the link to make the next and previous pagination links level
|
105
|
-
# @param govuk_pagination_previous_options [Hash] options that will be used in customising the HTML
|
106
|
-
#
|
107
|
-
# @option govuk_pagination_previous_options [ActionView::Helpers::FormBuilder] :form (nil) optional form builder used to create previous button
|
108
|
-
# @option govuk_pagination_previous_options [String] :href the URL for the link
|
109
|
-
# @option govuk_pagination_previous_options [String] :text ('Previous') the text for the link
|
110
|
-
# @option govuk_pagination_previous_options [String] :lable_text additional text for the link when the pagination block is level
|
111
|
-
# @option govuk_pagination_previous_options [Hash] :attributes ({}) any additional attributes that will added as part of the HTML
|
112
|
-
#
|
113
|
-
# @return [ActiveSupport::SafeBuffer] the HTML for the previous link/button
|
114
100
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
101
|
+
# Used by {govuk_pagination_previous}
|
102
|
+
# to generate the previous link content
|
103
|
+
#
|
104
|
+
# @param block_is_level [Boolean] when there are no items, this will be true and will add extra classes
|
105
|
+
# to the link to make the next and previous pagination links level
|
106
|
+
# @param govuk_pagination_previous_options [Hash] options that will be used in customising the HTML
|
107
|
+
#
|
108
|
+
# @option govuk_pagination_previous_options [ActionView::Helpers::FormBuilder] :form (nil) optional form builder used to create previous button
|
109
|
+
# @option govuk_pagination_previous_options [String] :href the URL for the link
|
110
|
+
# @option govuk_pagination_previous_options [String] :text ('Previous') the text for the link
|
111
|
+
# @option govuk_pagination_previous_options [String] :lable_text additional text for the link when the pagination block is level
|
112
|
+
# @option govuk_pagination_previous_options [Hash] :attributes ({}) any additional attributes that will added as part of the HTML
|
113
|
+
#
|
114
|
+
# @return [ActiveSupport::SafeBuffer] the HTML for the previous link/button
|
115
|
+
|
116
|
+
def govuk_pagination_previous_content(block_is_level, govuk_pagination_previous_options)
|
117
|
+
capture do
|
118
|
+
concat(govuk_pagination_icon(:prev))
|
119
|
+
concat(tag.span(govuk_pagination_previous_options[:text] || 'Previous', class: pagination_next_and_previous_classes(block_is_level, govuk_pagination_previous_options)))
|
120
|
+
concat(govuk_pagination_icon_label_text(block_is_level, govuk_pagination_previous_options[:lable_text]))
|
121
|
+
end
|
120
122
|
end
|
121
|
-
end
|
122
|
-
|
123
|
-
# Generates the next link for {govuk_pagination}
|
124
|
-
#
|
125
|
-
# @param (see govuk_pagination_next_content)
|
126
|
-
#
|
127
|
-
# @option (see govuk_pagination_next_content)
|
128
|
-
#
|
129
|
-
# @return [ActiveSupport::SafeBuffer] the HTML for the next link which is used in {govuk_pagination}
|
130
|
-
|
131
|
-
def govuk_pagination_next(block_is_level, **govuk_pagination_next_options)
|
132
|
-
govuk_pagination_next_options[:attributes] ||= {}
|
133
|
-
govuk_pagination_next_options[:attributes][:class] = "govuk-link govuk-pagination__link #{'pagination--button_as_link' if govuk_pagination_next_options[:form]}".rstrip
|
134
|
-
govuk_pagination_next_options[:attributes][:rel] = 'next'
|
135
123
|
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
124
|
+
# Generates the next link for {govuk_pagination}
|
125
|
+
#
|
126
|
+
# @param (see govuk_pagination_next_content)
|
127
|
+
#
|
128
|
+
# @option (see govuk_pagination_next_content)
|
129
|
+
#
|
130
|
+
# @return [ActiveSupport::SafeBuffer] the HTML for the next link which is used in {govuk_pagination}
|
131
|
+
|
132
|
+
def govuk_pagination_next(block_is_level, **govuk_pagination_next_options)
|
133
|
+
govuk_pagination_next_options[:attributes] ||= {}
|
134
|
+
govuk_pagination_next_options[:attributes][:class] = "govuk-link govuk-pagination__link #{'pagination--button_as_link' if govuk_pagination_next_options[:form]}".rstrip
|
135
|
+
govuk_pagination_next_options[:attributes][:rel] = 'next'
|
136
|
+
|
137
|
+
pagination_next_content = govuk_pagination_next_content(block_is_level, **govuk_pagination_next_options)
|
138
|
+
|
139
|
+
tag.div(class: 'govuk-pagination__next') do
|
140
|
+
if govuk_pagination_next_options[:form]
|
141
|
+
govuk_pagination_next_options[:form].button(pagination_next_content, **govuk_pagination_next_options[:attributes])
|
142
|
+
else
|
143
|
+
link_to(pagination_next_content, govuk_pagination_next_options[:href], **govuk_pagination_next_options[:attributes])
|
144
|
+
end
|
143
145
|
end
|
144
146
|
end
|
145
|
-
end
|
146
147
|
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
148
|
+
# Used by {govuk_pagination_next} to generate the next link content
|
149
|
+
#
|
150
|
+
# @param block_is_level [Boolean] when there are no items, this will be true and will add extra classe
|
151
|
+
# to the link to make the next and previous pagination links level
|
152
|
+
# @param govuk_pagination_next_options [Hash] options that will be used in customising the HTML
|
153
|
+
#
|
154
|
+
# @option govuk_pagination_next_options [ActionView::Helpers::FormBuilder] :form (nil) optional form builder used to create next button
|
155
|
+
# @option govuk_pagination_next_options [String] :href the URL for the link
|
156
|
+
# @option govuk_pagination_next_options [String] :text ('Next') the text for the link
|
157
|
+
# @option govuk_pagination_next_options [String] :lable_text additional text for the link when the pagination block is level
|
158
|
+
# @option govuk_pagination_next_options [Hash] :attributes ({}) any additional attributes that will added as part of the HTML
|
159
|
+
#
|
160
|
+
# @return [ActiveSupport::SafeBuffer] the HTML for the next link/button
|
161
|
+
|
162
|
+
def govuk_pagination_next_content(block_is_level, **govuk_pagination_next_options)
|
163
|
+
capture do
|
164
|
+
concat(govuk_pagination_icon(:next)) if block_is_level
|
165
|
+
concat(tag.span(govuk_pagination_next_options[:text] || 'Next', class: pagination_next_and_previous_classes(block_is_level, govuk_pagination_next_options)))
|
166
|
+
concat(govuk_pagination_icon_label_text(block_is_level, govuk_pagination_next_options[:lable_text]))
|
167
|
+
concat(govuk_pagination_icon(:next)) unless block_is_level
|
168
|
+
end
|
167
169
|
end
|
168
|
-
end
|
169
170
|
|
170
|
-
|
171
|
-
|
172
|
-
|
171
|
+
# Returns the classes for the previous and next link/button label
|
172
|
+
#
|
173
|
+
# @param (see govuk_pagination_next_content)
|
173
174
|
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
# Generates the item links for {govuk_pagination}
|
179
|
-
#
|
180
|
-
# @param (see _govuk_pagination_items)
|
181
|
-
# @param form [ActionView::Helpers::FormBuilder] optional form builder used to create the item buttons
|
182
|
-
#
|
183
|
-
# @return [ActiveSupport::SafeBuffer] the HTML for the lits of items which is used in {govuk_pagination}
|
175
|
+
def pagination_next_and_previous_classes(block_is_level, govuk_pagination_options)
|
176
|
+
"govuk-pagination__link-title #{'govuk-pagination__link-title--decorated' if block_is_level && !govuk_pagination_options[:lable_text]}".rstrip
|
177
|
+
end
|
184
178
|
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
179
|
+
# Generates the item links for {govuk_pagination}
|
180
|
+
#
|
181
|
+
# @param (see _govuk_pagination_items)
|
182
|
+
# @param form [ActionView::Helpers::FormBuilder] optional form builder used to create the item buttons
|
183
|
+
#
|
184
|
+
# @return [ActiveSupport::SafeBuffer] the HTML for the lits of items which is used in {govuk_pagination}
|
185
|
+
|
186
|
+
def govuk_pagination_items(govuk_pagination_items, form:)
|
187
|
+
if form
|
188
|
+
_govuk_pagination_items(govuk_pagination_items) do |govuk_pagination_item|
|
189
|
+
govuk_pagination_item_number_form(form, govuk_pagination_item)
|
190
|
+
end
|
191
|
+
else
|
192
|
+
_govuk_pagination_items(govuk_pagination_items) do |govuk_pagination_item|
|
193
|
+
govuk_pagination_item_number_tag(govuk_pagination_item)
|
194
|
+
end
|
193
195
|
end
|
194
196
|
end
|
195
|
-
end
|
196
|
-
|
197
|
-
# Wrapper method used by {govuk_pagination_items}
|
198
|
-
# to generate the pagination items HTML
|
199
|
-
#
|
200
|
-
# @param govuk_pagination_items [Array(Hash)] an array of item hashes for the pagination.
|
201
|
-
# There are two types of item:
|
202
|
-
# - {govuk_pagination_item_ellipsis ellipsis item}
|
203
|
-
# - {govuk_pagination_item_number_tag number item}
|
204
|
-
#
|
205
|
-
# @yield the pagination number item HTML generated by {govuk_pagination_items}
|
206
|
-
#
|
207
|
-
# @yieldparam govuk_pagination_item [Hash] the current pagination item in the loop
|
208
|
-
#
|
209
|
-
# @return [ActiveSupport::SafeBuffer] the HTML for the lits of items which is
|
210
|
-
# used in {govuk_pagination_items}
|
211
197
|
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
198
|
+
# Wrapper method used by {govuk_pagination_items}
|
199
|
+
# to generate the pagination items HTML
|
200
|
+
#
|
201
|
+
# @param govuk_pagination_items [Array(Hash)] an array of item hashes for the pagination.
|
202
|
+
# There are two types of item:
|
203
|
+
# - {govuk_pagination_item_ellipsis ellipsis item}
|
204
|
+
# - {govuk_pagination_item_number_tag number item}
|
205
|
+
#
|
206
|
+
# @yield the pagination number item HTML generated by {govuk_pagination_items}
|
207
|
+
#
|
208
|
+
# @yieldparam govuk_pagination_item [Hash] the current pagination item in the loop
|
209
|
+
#
|
210
|
+
# @return [ActiveSupport::SafeBuffer] the HTML for the lits of items which is
|
211
|
+
# used in {govuk_pagination_items}
|
212
|
+
|
213
|
+
def _govuk_pagination_items(govuk_pagination_items)
|
214
|
+
tag.ul(class: 'govuk-pagination__list') do
|
215
|
+
capture do
|
216
|
+
govuk_pagination_items.each do |govuk_pagination_item|
|
217
|
+
case govuk_pagination_item[:type]
|
218
|
+
when :ellipsis
|
219
|
+
concat(govuk_pagination_item_ellipsis)
|
220
|
+
when :number
|
221
|
+
concat(yield(govuk_pagination_item))
|
222
|
+
end
|
221
223
|
end
|
222
224
|
end
|
223
225
|
end
|
224
226
|
end
|
225
|
-
end
|
226
|
-
|
227
|
-
# Generates the icon for:
|
228
|
-
# - {govuk_pagination_previous}
|
229
|
-
# - {govuk_pagination_next}
|
230
|
-
#
|
231
|
-
# @param type [Symbol] the type of the pagination icon (+:prev+ or +:next+)
|
232
|
-
#
|
233
|
-
# @return [ActiveSupport::SafeBuffer]
|
234
227
|
|
235
|
-
|
236
|
-
|
237
|
-
|
228
|
+
# Generates the icon for:
|
229
|
+
# - {govuk_pagination_previous}
|
230
|
+
# - {govuk_pagination_next}
|
231
|
+
#
|
232
|
+
# @param type [Symbol] the type of the pagination icon (+:prev+ or +:next+)
|
233
|
+
#
|
234
|
+
# @return [ActiveSupport::SafeBuffer]
|
235
|
+
|
236
|
+
def govuk_pagination_icon(type)
|
237
|
+
tag.svg(class: "govuk-pagination__icon govuk-pagination__icon--#{type}", xmlns: 'http://www.w3.org/2000/svg', height: '13', width: '15', aria: { hidden: 'true' }, focusable: 'false', viewBox: '0 0 15 13') do
|
238
|
+
tag.path(d: PAGINATION_ICON_PATHS[type])
|
239
|
+
end
|
238
240
|
end
|
239
|
-
end
|
240
241
|
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
242
|
+
# Generates the label text for:
|
243
|
+
# - {govuk_pagination_previous}
|
244
|
+
# - {govuk_pagination_next}
|
245
|
+
#
|
246
|
+
# @param block_is_level [Boolean] when there are no items, this will be true
|
247
|
+
# @param label_text [String] the additional text for the link
|
248
|
+
#
|
249
|
+
# @return [ActiveSupport::SafeBuffer]
|
249
250
|
|
250
|
-
|
251
|
-
|
251
|
+
def govuk_pagination_icon_label_text(block_is_level, label_text)
|
252
|
+
return unless block_is_level && label_text
|
252
253
|
|
253
|
-
|
254
|
-
|
255
|
-
|
254
|
+
capture do
|
255
|
+
concat(tag.span(':', class: 'govuk-visually-hidden'))
|
256
|
+
concat(tag.span(label_text, class: 'govuk-pagination__link-label'))
|
257
|
+
end
|
256
258
|
end
|
257
|
-
end
|
258
|
-
|
259
|
-
# Generates the ellipsis HTML for {govuk_pagination_items}
|
260
|
-
#
|
261
|
-
# @return [ActiveSupport::SafeBuffer] the HTML for an ellipsis item which is used in {govuk_pagination_items}
|
262
259
|
|
263
|
-
|
264
|
-
|
265
|
-
|
260
|
+
# Generates the ellipsis HTML for {govuk_pagination_items}
|
261
|
+
#
|
262
|
+
# @return [ActiveSupport::SafeBuffer] the HTML for an ellipsis item which is used in {govuk_pagination_items}
|
266
263
|
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
#
|
271
|
-
# @option (see _govuk_pagination_item_number)
|
272
|
-
#
|
273
|
-
# @return [ActiveSupport::SafeBuffer] the HTML for an number item which is used in {govuk_pagination_items}
|
264
|
+
def govuk_pagination_item_ellipsis
|
265
|
+
tag.li('⋯', class: 'govuk-pagination__item govuk-pagination__item--ellipses')
|
266
|
+
end
|
274
267
|
|
275
|
-
|
276
|
-
|
277
|
-
|
268
|
+
# Generates the number item HTML for {govuk_pagination_items}
|
269
|
+
#
|
270
|
+
# @param (see _govuk_pagination_item_number)
|
271
|
+
#
|
272
|
+
# @option (see _govuk_pagination_item_number)
|
273
|
+
#
|
274
|
+
# @return [ActiveSupport::SafeBuffer] the HTML for an number item which is used in {govuk_pagination_items}
|
275
|
+
|
276
|
+
def govuk_pagination_item_number_tag(govuk_pagination_item)
|
277
|
+
_govuk_pagination_item_number(govuk_pagination_item) do
|
278
|
+
link_to(govuk_pagination_item[:number], govuk_pagination_item[:href], **govuk_pagination_item[:attributes])
|
279
|
+
end
|
278
280
|
end
|
279
|
-
end
|
280
281
|
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
282
|
+
# Generates the number item HTML for {govuk_pagination_items} when there is a ActionView::Helpers::FormBuilder
|
283
|
+
#
|
284
|
+
# @param form [ActionView::Helpers::FormBuilder] the form builder used to create the item button
|
285
|
+
# @param (see _govuk_pagination_item_number)
|
286
|
+
#
|
287
|
+
# @option (see _govuk_pagination_item_number)
|
288
|
+
#
|
289
|
+
# @return (see govuk_pagination_item_number_tag)
|
289
290
|
|
290
|
-
|
291
|
-
|
291
|
+
def govuk_pagination_item_number_form(form, govuk_pagination_item)
|
292
|
+
govuk_pagination_item[:classes] = 'pagination-number--button_as_link'
|
292
293
|
|
293
|
-
|
294
|
-
|
294
|
+
_govuk_pagination_item_number(govuk_pagination_item) do
|
295
|
+
form.button(govuk_pagination_item[:number], **govuk_pagination_item[:attributes])
|
296
|
+
end
|
295
297
|
end
|
296
|
-
end
|
297
|
-
|
298
|
-
# Wrapper method used by {govuk_pagination_item_number_tag} and {govuk_pagination_item_number_form}
|
299
|
-
# to generate the pagination number item HTML
|
300
|
-
#
|
301
|
-
# @param govuk_pagination_item [Hash] options that will be used in customising the HTML
|
302
|
-
#
|
303
|
-
# @option govuk_pagination_item [String] :href the URL for the link
|
304
|
-
# @option govuk_pagination_item [String] :number the number for the link
|
305
|
-
# @option govuk_pagination_item [String] :current is this item the current page
|
306
|
-
# @option govuk_pagination_item [Hash] :attributes ({aria: { label: 'Page <NUMBER>' } })
|
307
|
-
# any additional attributes that will added as part of the HTML
|
308
|
-
#
|
309
|
-
# @yield the pagination number item link (when {govuk_pagination_item_number_tag}) or button (when {govuk_pagination_item_number_form})
|
310
|
-
#
|
311
|
-
# @return [ActiveSupport::SafeBuffer] the HTML for an number item which is used
|
312
|
-
# in {govuk_pagination_item_number_tag} or {govuk_pagination_item_number_form}
|
313
|
-
|
314
|
-
def _govuk_pagination_item_number(govuk_pagination_item, &block)
|
315
|
-
(govuk_pagination_item[:attributes] ||= {})[:aria] ||= {}
|
316
|
-
govuk_pagination_item[:attributes][:class] = "govuk-link govuk-pagination__link #{govuk_pagination_item[:classes]}".rstrip
|
317
|
-
govuk_pagination_item[:attributes][:aria][:label] ||= "Page #{govuk_pagination_item[:number]}"
|
318
298
|
|
319
|
-
|
299
|
+
# Wrapper method used by {govuk_pagination_item_number_tag} and {govuk_pagination_item_number_form}
|
300
|
+
# to generate the pagination number item HTML
|
301
|
+
#
|
302
|
+
# @param govuk_pagination_item [Hash] options that will be used in customising the HTML
|
303
|
+
#
|
304
|
+
# @option govuk_pagination_item [String] :href the URL for the link
|
305
|
+
# @option govuk_pagination_item [String] :number the number for the link
|
306
|
+
# @option govuk_pagination_item [String] :current is this item the current page
|
307
|
+
# @option govuk_pagination_item [Hash] :attributes ({aria: { label: 'Page <NUMBER>' } })
|
308
|
+
# any additional attributes that will added as part of the HTML
|
309
|
+
#
|
310
|
+
# @yield the pagination number item link (when {govuk_pagination_item_number_tag}) or button (when {govuk_pagination_item_number_form})
|
311
|
+
#
|
312
|
+
# @return [ActiveSupport::SafeBuffer] the HTML for an number item which is used
|
313
|
+
# in {govuk_pagination_item_number_tag} or {govuk_pagination_item_number_form}
|
314
|
+
|
315
|
+
def _govuk_pagination_item_number(govuk_pagination_item, &block)
|
316
|
+
(govuk_pagination_item[:attributes] ||= {})[:aria] ||= {}
|
317
|
+
govuk_pagination_item[:attributes][:class] = "govuk-link govuk-pagination__link #{govuk_pagination_item[:classes]}".rstrip
|
318
|
+
govuk_pagination_item[:attributes][:aria][:label] ||= "Page #{govuk_pagination_item[:number]}"
|
319
|
+
|
320
|
+
govuk_pagination_list_classes = +'govuk-pagination__item'
|
321
|
+
|
322
|
+
if govuk_pagination_item[:current]
|
323
|
+
govuk_pagination_list_classes << ' govuk-pagination__item--current'
|
324
|
+
govuk_pagination_item[:attributes][:aria][:current] = 'page'
|
325
|
+
end
|
320
326
|
|
321
|
-
|
322
|
-
govuk_pagination_list_classes << ' govuk-pagination__item--current'
|
323
|
-
govuk_pagination_item[:attributes][:aria][:current] = 'page'
|
327
|
+
tag.li(class: govuk_pagination_list_classes, &block)
|
324
328
|
end
|
325
329
|
|
326
|
-
|
327
|
-
end
|
328
|
-
|
329
|
-
# The paths for the pagination next and previous icons
|
330
|
+
# The paths for the pagination next and previous icons
|
330
331
|
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
332
|
+
PAGINATION_ICON_PATHS = {
|
333
|
+
prev: 'm6.5938-0.0078125-6.7266 6.7266 6.7441 6.4062 1.377-1.449-4.1856-3.9768h12.896v-2h-12.984l4.2931-4.293-1.414-1.414z',
|
334
|
+
next: 'm8.107-0.0078125-1.4136 1.414 4.2926 4.293h-12.986v2h12.896l-4.1855 3.9766 1.377 1.4492 6.7441-6.4062-6.7246-6.7266z'
|
335
|
+
}.freeze
|
336
|
+
end
|
337
|
+
# rubocop:enable Metrics/ModuleLength
|
335
338
|
end
|
336
|
-
# rubocop:enable Metrics/ModuleLength
|
337
339
|
end
|
338
340
|
end
|