playbook_ui 11.15.0 → 11.16.0.pre.alpha.pagination.rails1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/_playbook.scss +2 -0
- data/app/pb_kits/playbook/data/menu.yml +1 -0
- data/app/pb_kits/playbook/index.js +2 -1
- data/app/pb_kits/playbook/pb_pagination/_pagination.scss +68 -0
- data/app/pb_kits/playbook/pb_pagination/_pagination.tsx +41 -0
- data/app/pb_kits/playbook/pb_pagination/docs/_pagination_default.html.erb +28 -0
- data/app/pb_kits/playbook/pb_pagination/docs/_pagination_default.jsx +12 -0
- data/app/pb_kits/playbook/pb_pagination/docs/example.yml +9 -0
- data/app/pb_kits/playbook/pb_pagination/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_pagination/pagination.html.erb +7 -0
- data/app/pb_kits/playbook/pb_pagination/pagination.rb +14 -0
- data/app/pb_kits/playbook/pb_pagination/pagination.test.jsx +17 -0
- data/app/pb_kits/playbook/playbook-doc.js +2 -0
- data/lib/playbook/kit_base.rb +2 -0
- data/lib/playbook/pagination_renderer.rb +43 -0
- data/lib/playbook/version.rb +2 -2
- data/lib/playbook.rb +1 -0
- metadata +27 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d1c2dd6e15de3851fa13af4d58c06b78448261e4dc2a973718ae53f518324638
|
4
|
+
data.tar.gz: 896cb320d58e4be679254fafdda40d7269f53161bcb1b417c6c5e2c725173de4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 25c4283002f9b516e41e3f4a66e13fa1ddc71935c245001141357df87637500d5d9e87361bc35ccf6feee206ad0d8982701ea1d80390d5a937502657a8bc12d4
|
7
|
+
data.tar.gz: a87f20dc862b0f749fd3950a950596e97c8712a4ec130bf2856d3bd6f854fa41fcc3d3cedae27d043e3771d3d5c29a1b07f096831cac746f7d86ef1e220deadc
|
@@ -53,9 +53,9 @@ export { default as LabelPill } from './pb_label_pill/_label_pill'
|
|
53
53
|
export { default as LabelValue } from './pb_label_value/_label_value'
|
54
54
|
export { default as Layout } from './pb_layout/_layout'
|
55
55
|
export { default as Legend } from './pb_legend/_legend'
|
56
|
+
export { default as Lightbox } from './pb_lightbox/_lightbox'
|
56
57
|
export { default as LineGraph } from './pb_line_graph/_line_graph'
|
57
58
|
export { default as List } from './pb_list/_list'
|
58
|
-
export { default as Lightbox } from './pb_lightbox/_lightbox'
|
59
59
|
export { default as ListItem } from './pb_list/_list_item'
|
60
60
|
export { default as LoadingInline } from './pb_loading_inline/_loading_inline'
|
61
61
|
export { default as Message } from './pb_message/_message'
|
@@ -64,6 +64,7 @@ export { default as MultipleUsersStacked } from './pb_multiple_users_stacked/_mu
|
|
64
64
|
export { default as Nav } from './pb_nav/_nav'
|
65
65
|
export { default as NavItem } from './pb_nav/_item'
|
66
66
|
export { default as OnlineStatus } from './pb_online_status/_online_status'
|
67
|
+
export { default as Pagination} from './pb_pagination/_pagination'
|
67
68
|
export { default as Passphrase } from './pb_passphrase/_passphrase'
|
68
69
|
export { default as PbReactPopover } from './pb_popover/_popover'
|
69
70
|
export { default as Person } from './pb_person/_person'
|
@@ -0,0 +1,68 @@
|
|
1
|
+
@import "tokens/colors";
|
2
|
+
@import "tokens/typography";
|
3
|
+
@import "tokens/border_radius";
|
4
|
+
@import "tokens/shadows";
|
5
|
+
|
6
|
+
.pb_pagination {
|
7
|
+
display: inline-block;
|
8
|
+
border-radius: $border_rad_light;
|
9
|
+
border: 1px solid $border_light;
|
10
|
+
background-color: $white;
|
11
|
+
padding: 3px 0px 3.6px 0px;
|
12
|
+
li {
|
13
|
+
display: inline;
|
14
|
+
> a, li > span {
|
15
|
+
padding: 7px 13px;
|
16
|
+
text-decoration: none;
|
17
|
+
margin-left: -1px;
|
18
|
+
border: 0 !important;
|
19
|
+
}}
|
20
|
+
li:first-child > a, li:first-child > span {
|
21
|
+
padding: 7px 13px;
|
22
|
+
margin-left: .5px;
|
23
|
+
border-right: 1px solid $border_light !important;
|
24
|
+
z-index: 2;
|
25
|
+
}
|
26
|
+
li:last-child > a, li:last-child > span {
|
27
|
+
padding: 7px 13px;
|
28
|
+
margin-right: .5px;
|
29
|
+
border-left: 1px solid $border_light !important;
|
30
|
+
z-index: 2;
|
31
|
+
}
|
32
|
+
a {
|
33
|
+
color: $text_lt_default !important;
|
34
|
+
font-size: $text_small;
|
35
|
+
font-weight: $regular;
|
36
|
+
border: none;
|
37
|
+
|
38
|
+
&:hover {
|
39
|
+
background-color: $active_light;
|
40
|
+
color: $primary !important;
|
41
|
+
border-radius: $border_rad_light;
|
42
|
+
}
|
43
|
+
|
44
|
+
&:focus {
|
45
|
+
outline: 1px solid $primary !important;
|
46
|
+
border-radius: $border_rad_light;
|
47
|
+
outline-offset: -1px;
|
48
|
+
}
|
49
|
+
}
|
50
|
+
.active > span {
|
51
|
+
background-color: $primary !important;
|
52
|
+
border-radius: $border_rad_light;
|
53
|
+
color: #fff;
|
54
|
+
padding: 7px 10px;
|
55
|
+
border: 0 !important;
|
56
|
+
text-decoration: none;
|
57
|
+
font-weight: $bold;
|
58
|
+
font-size: $text_small;
|
59
|
+
|
60
|
+
&:hover {
|
61
|
+
box-shadow: $shadow_deeper;
|
62
|
+
}
|
63
|
+
}
|
64
|
+
.disabled > span {
|
65
|
+
padding: 7px 10px;
|
66
|
+
font-size: $text_small;
|
67
|
+
}
|
68
|
+
}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
/* @flow */
|
4
|
+
|
5
|
+
import React from 'react'
|
6
|
+
import classnames from 'classnames'
|
7
|
+
import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
|
8
|
+
import { globalProps } from '../utilities/globalProps'
|
9
|
+
|
10
|
+
type PaginationProps = {
|
11
|
+
aria?: { [key: string]: string },
|
12
|
+
className?: string,
|
13
|
+
data?: { [key: string]: string },
|
14
|
+
id?: string,
|
15
|
+
}
|
16
|
+
|
17
|
+
const Pagination = (props: PaginationProps) => {
|
18
|
+
const {
|
19
|
+
aria = {},
|
20
|
+
className,
|
21
|
+
data = {},
|
22
|
+
id,
|
23
|
+
} = props
|
24
|
+
|
25
|
+
const ariaProps = buildAriaProps(aria)
|
26
|
+
const dataProps = buildDataProps(data)
|
27
|
+
const classes = classnames(buildCss('pb_pagination'), globalProps(props), className)
|
28
|
+
|
29
|
+
return (
|
30
|
+
<div
|
31
|
+
{...ariaProps}
|
32
|
+
{...dataProps}
|
33
|
+
className={classes}
|
34
|
+
id={id}
|
35
|
+
>
|
36
|
+
{className}
|
37
|
+
</div>
|
38
|
+
)
|
39
|
+
}
|
40
|
+
|
41
|
+
export default Pagination
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<% @data = [{
|
2
|
+
first_name: 'Jon',
|
3
|
+
last_name: 'Ron',
|
4
|
+
email: "jon@mail.com",
|
5
|
+
id: 1,
|
6
|
+
}, {
|
7
|
+
first_name: 'Sam',
|
8
|
+
last_name: 'Bob',
|
9
|
+
email: "sam@mail.com",
|
10
|
+
id: 2,
|
11
|
+
}, {
|
12
|
+
first_name: 'Nick',
|
13
|
+
last_name: 'Jack',
|
14
|
+
email: "nick@mail.com",
|
15
|
+
id: 3,
|
16
|
+
}, {
|
17
|
+
first_name: 'Jake',
|
18
|
+
last_name: 'Wade',
|
19
|
+
email: "jon@mail.com",
|
20
|
+
id: 4,
|
21
|
+
}, {
|
22
|
+
first_name: 'Blake',
|
23
|
+
last_name: 'Chad',
|
24
|
+
email: "jon@mail.com",
|
25
|
+
id: 5,
|
26
|
+
}] %>
|
27
|
+
|
28
|
+
<%= pb_rails("pagination", props: { data: @data}) %>
|
@@ -0,0 +1 @@
|
|
1
|
+
export { default as PaginationDefault } from './_pagination_default.jsx'
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "will_paginate/array"
|
4
|
+
module Playbook
|
5
|
+
module PbPagination
|
6
|
+
class Pagination < ::Playbook::KitBase
|
7
|
+
prop :data, type: Playbook::Props::Array,
|
8
|
+
default: []
|
9
|
+
def page_data
|
10
|
+
data.paginate(page: params[:page], per_page: 1)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import { renderKit } from '../utilities/test-utils'
|
2
|
+
|
3
|
+
import { Pagination } from '../'
|
4
|
+
|
5
|
+
/* See these resources for more testing info:
|
6
|
+
- https://github.com/testing-library/jest-dom#usage for useage and examples
|
7
|
+
- https://jestjs.io/docs/en/using-matchers
|
8
|
+
*/
|
9
|
+
|
10
|
+
test('generated scaffold test - update me', () => {
|
11
|
+
const props = {
|
12
|
+
data: { testid: 'default' }
|
13
|
+
}
|
14
|
+
|
15
|
+
const kit = renderKit(Pagination , props)
|
16
|
+
expect(kit).toBeInTheDocument()
|
17
|
+
})
|
@@ -60,6 +60,7 @@ import * as MultipleUsers from 'pb_multiple_users/docs'
|
|
60
60
|
import * as MultipleUsersStacked from 'pb_multiple_users_stacked/docs'
|
61
61
|
import * as Nav from 'pb_nav/docs'
|
62
62
|
import * as OnlineStatus from 'pb_online_status/docs'
|
63
|
+
import * as Pagination from 'pb_pagination/docs'
|
63
64
|
import * as Passphrase from 'pb_passphrase/docs'
|
64
65
|
import * as PbReactPopover from 'pb_popover/docs'
|
65
66
|
import * as Person from 'pb_person/docs'
|
@@ -157,6 +158,7 @@ WebpackerReact.setup({
|
|
157
158
|
...MultipleUsersStacked,
|
158
159
|
...Nav,
|
159
160
|
...OnlineStatus,
|
161
|
+
...Pagination,
|
160
162
|
...Passphrase,
|
161
163
|
...PbReactPopover,
|
162
164
|
...Person,
|
data/lib/playbook/kit_base.rb
CHANGED
@@ -19,6 +19,7 @@ require "playbook/flex"
|
|
19
19
|
require "playbook/flex_grow"
|
20
20
|
require "playbook/flex_shrink"
|
21
21
|
require "playbook/order"
|
22
|
+
require "playbook/pagination_renderer"
|
22
23
|
|
23
24
|
module Playbook
|
24
25
|
class KitBase < ViewComponent::Base
|
@@ -43,6 +44,7 @@ module Playbook
|
|
43
44
|
include Playbook::FlexGrow
|
44
45
|
include Playbook::FlexShrink
|
45
46
|
include Playbook::Order
|
47
|
+
include Playbook::Pagination
|
46
48
|
|
47
49
|
prop :id
|
48
50
|
prop :data, type: Playbook::Props::Hash, default: {}
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "will_paginate/view_helpers/action_view"
|
4
|
+
|
5
|
+
module Playbook
|
6
|
+
module Pagination
|
7
|
+
class Rails < WillPaginate::ActionView::LinkRenderer
|
8
|
+
def container_attributes
|
9
|
+
{ class: "pb_pagination pagination" }
|
10
|
+
end
|
11
|
+
|
12
|
+
def page_number(page)
|
13
|
+
if page == current_page
|
14
|
+
tag("li", tag("span", page), class: "active")
|
15
|
+
else
|
16
|
+
tag("li", link(page, page, rel: rel_value(page)))
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def previous_or_next_page(page, text, classname)
|
21
|
+
if page
|
22
|
+
tag("li", link(text, page), class: classname)
|
23
|
+
else
|
24
|
+
tag("li", tag("span", text), class: "%s disabled")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def gap
|
29
|
+
tag("li", tag("span", "…"), class: "disabled")
|
30
|
+
end
|
31
|
+
|
32
|
+
def previous_page
|
33
|
+
num = @collection.current_page > 1 && @collection.current_page - 1
|
34
|
+
previous_or_next_page(num, "<i class='far fa-chevron-left fa-xs'></i>", "prev")
|
35
|
+
end
|
36
|
+
|
37
|
+
def next_page
|
38
|
+
num = @collection.current_page < @collection.total_pages && @collection.current_page + 1
|
39
|
+
previous_or_next_page(num, "<i class='far fa-chevron-right fa-xs'></i>", "next")
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/lib/playbook/version.rb
CHANGED
data/lib/playbook.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: playbook_ui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 11.
|
4
|
+
version: 11.16.0.pre.alpha.pagination.rails1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Power UX
|
@@ -269,6 +269,20 @@ dependencies:
|
|
269
269
|
- - '='
|
270
270
|
- !ruby/object:Gem::Version
|
271
271
|
version: 1.2018.9
|
272
|
+
- !ruby/object:Gem::Dependency
|
273
|
+
name: will_paginate
|
274
|
+
requirement: !ruby/object:Gem::Requirement
|
275
|
+
requirements:
|
276
|
+
- - "~>"
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
version: '3.3'
|
279
|
+
type: :development
|
280
|
+
prerelease: false
|
281
|
+
version_requirements: !ruby/object:Gem::Requirement
|
282
|
+
requirements:
|
283
|
+
- - "~>"
|
284
|
+
- !ruby/object:Gem::Version
|
285
|
+
version: '3.3'
|
272
286
|
description: Playbook Design System. Built for Nitro, but powering all.
|
273
287
|
email:
|
274
288
|
- nitroux@powerhrg.com
|
@@ -1460,6 +1474,15 @@ files:
|
|
1460
1474
|
- app/pb_kits/playbook/pb_online_status/docs/index.js
|
1461
1475
|
- app/pb_kits/playbook/pb_online_status/online_status.html.erb
|
1462
1476
|
- app/pb_kits/playbook/pb_online_status/online_status.rb
|
1477
|
+
- app/pb_kits/playbook/pb_pagination/_pagination.scss
|
1478
|
+
- app/pb_kits/playbook/pb_pagination/_pagination.tsx
|
1479
|
+
- app/pb_kits/playbook/pb_pagination/docs/_pagination_default.html.erb
|
1480
|
+
- app/pb_kits/playbook/pb_pagination/docs/_pagination_default.jsx
|
1481
|
+
- app/pb_kits/playbook/pb_pagination/docs/example.yml
|
1482
|
+
- app/pb_kits/playbook/pb_pagination/docs/index.js
|
1483
|
+
- app/pb_kits/playbook/pb_pagination/pagination.html.erb
|
1484
|
+
- app/pb_kits/playbook/pb_pagination/pagination.rb
|
1485
|
+
- app/pb_kits/playbook/pb_pagination/pagination.test.jsx
|
1463
1486
|
- app/pb_kits/playbook/pb_passphrase/_passphrase.jsx
|
1464
1487
|
- app/pb_kits/playbook/pb_passphrase/_passphrase.scss
|
1465
1488
|
- app/pb_kits/playbook/pb_passphrase/docs/_passphrase_breached.html.erb
|
@@ -2321,6 +2344,7 @@ files:
|
|
2321
2344
|
- lib/playbook/markdown/template_handler.rb
|
2322
2345
|
- lib/playbook/number_spacing.rb
|
2323
2346
|
- lib/playbook/order.rb
|
2347
|
+
- lib/playbook/pagination_renderer.rb
|
2324
2348
|
- lib/playbook/pb_doc_helper.rb
|
2325
2349
|
- lib/playbook/pb_forms_helper.rb
|
2326
2350
|
- lib/playbook/pb_kit_helper.rb
|
@@ -2359,9 +2383,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
2359
2383
|
version: '0'
|
2360
2384
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
2361
2385
|
requirements:
|
2362
|
-
- - "
|
2386
|
+
- - ">"
|
2363
2387
|
- !ruby/object:Gem::Version
|
2364
|
-
version:
|
2388
|
+
version: 1.3.1
|
2365
2389
|
requirements: []
|
2366
2390
|
rubygems_version: 3.3.7
|
2367
2391
|
signing_key:
|