@@ -57,6 +57,10 @@ def pages
5757 end
5858 end
5959
60+ def render?
61+ page_count > 1
62+ end
63+
6064 private
6165
6266 def cast_integer! ( value , name )
@@ -81,36 +85,45 @@ def default_href_builder(page_num)
8185 end
8286
8387 def build_pagination_model
84- prev_page = previous_page_item
85- next_page = next_page_item
86-
87- return [ prev_page , next_page ] unless show_pages || page_count <= 0
88+ pages = [ ]
8889
89- pages = if all_pages_fit?
90- full_pagination_without_breaks
91- else
92- paginated_number_items
93- end
90+ pages << previous_page_item unless first_page?
91+ pages . concat ( number_page_items ) if show_pages
92+ pages << next_page_item unless last_page?
9493
95- [ prev_page , * pages , next_page ]
94+ pages
9695 end
9796
9897 def previous_page_item
9998 {
10099 type : PAGE_TYPE__PREV ,
101- num : current_page - 1 ,
102- disabled : current_page == 1
100+ num : current_page - 1
103101 }
104102 end
105103
106104 def next_page_item
107105 {
108106 type : PAGE_TYPE__NEXT ,
109- num : current_page + 1 ,
110- disabled : current_page == page_count
107+ num : current_page + 1
111108 }
112109 end
113110
111+ def first_page?
112+ current_page == 1
113+ end
114+
115+ def last_page?
116+ current_page == page_count
117+ end
118+
119+ def number_page_items
120+ if all_pages_fit?
121+ full_pagination_without_breaks
122+ else
123+ paginated_number_items
124+ end
125+ end
126+
114127 def full_pagination_without_breaks
115128 pages = [ ]
116129 add_pages ( pages , 1 , page_count )
@@ -233,20 +246,12 @@ def build_component_data(page)
233246 key_string = key . to_s
234247 content = I18n . t ( "pagination.#{ key_string } " )
235248
236- if page [ :disabled ]
237- props . merge! (
238- rel : key_string ,
239- "aria-hidden" : "true" ,
240- "aria-disabled" : "true"
241- )
242- else
243- props . merge! (
244- rel : key_string ,
245- href : href_builder . call ( page [ :num ] ) ,
246- "aria-label" : I18n . t ( "pagination.#{ key_string } _page" ) ,
247- **@link_arguments
248- )
249- end
249+ props . merge! (
250+ rel : key_string ,
251+ href : href_builder . call ( page [ :num ] ) ,
252+ "aria-label" : I18n . t ( "pagination.#{ key_string } _page" ) ,
253+ **@link_arguments
254+ )
250255
251256 when PAGE_TYPE__NUM
252257 key = :"page-#{ page [ :num ] } "
0 commit comments