playbook_ui 8.2.0.pre.alpha2 → 8.2.0.pre.alpha3
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/app/pb_kits/playbook/_playbook.scss +1 -0
- data/app/pb_kits/playbook/data/menu.yml +2 -1
- data/app/pb_kits/playbook/index.js +1 -0
- data/app/pb_kits/playbook/pb_avatar/_avatar.jsx +14 -2
- data/app/pb_kits/playbook/pb_avatar/avatar.html.erb +1 -1
- data/app/pb_kits/playbook/pb_avatar/avatar.rb +5 -2
- data/app/pb_kits/playbook/pb_avatar/avatar.test.js +5 -2
- data/app/pb_kits/playbook/pb_avatar/docs/_avatar_default.html.erb +5 -0
- data/app/pb_kits/playbook/pb_avatar/docs/_avatar_default.jsx +5 -0
- data/app/pb_kits/playbook/pb_avatar/docs/_avatar_status.html.erb +4 -0
- data/app/pb_kits/playbook/pb_avatar/docs/_avatar_status.jsx +4 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/_avatar_action_button.jsx +6 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/avatar_action_button.html.erb +2 -1
- data/app/pb_kits/playbook/pb_avatar_action_button/avatar_action_button.rb +2 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_actions.html.erb +4 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_actions.jsx +4 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_default.html.erb +2 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_default.jsx +2 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_on_click.jsx +2 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_onclick.html.erb +2 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_placement.html.erb +8 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_placement.jsx +8 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_tooltip.html.erb +2 -0
- data/app/pb_kits/playbook/pb_avatar_action_button/pb_avatar_action_button.test.js +31 -0
- data/app/pb_kits/playbook/pb_caption/_caption.jsx +3 -2
- data/app/pb_kits/playbook/pb_caption/caption.rb +1 -1
- data/app/pb_kits/playbook/pb_card/_card.jsx +18 -3
- data/app/pb_kits/playbook/pb_card/card.html.erb +1 -1
- data/app/pb_kits/playbook/pb_card/card.rb +3 -0
- data/app/pb_kits/playbook/pb_card/docs/_card_tag.html.erb +25 -0
- data/app/pb_kits/playbook/pb_card/docs/_card_tag.jsx +59 -0
- data/app/pb_kits/playbook/pb_card/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_card/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_checkbox/_checkbox.jsx +31 -9
- data/app/pb_kits/playbook/pb_checkbox/_checkbox.scss +28 -19
- data/app/pb_kits/playbook/pb_checkbox/checkbox.html.erb +11 -3
- data/app/pb_kits/playbook/pb_checkbox/checkbox.rb +6 -1
- data/app/pb_kits/playbook/pb_checkbox/checkbox.test.js +94 -0
- data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_custom.jsx +0 -1
- data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_indeterminate.html.erb +7 -0
- data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_indeterminate.jsx +16 -0
- data/app/pb_kits/playbook/pb_checkbox/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_checkbox/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_dialog/_close_icon.jsx +23 -0
- data/app/pb_kits/playbook/pb_dialog/_dialog.html.erb +10 -0
- data/app/pb_kits/playbook/pb_dialog/_dialog.jsx +142 -0
- data/app/pb_kits/playbook/pb_dialog/_dialog.scss +133 -0
- data/app/pb_kits/playbook/pb_dialog/_dialog_context.jsx +3 -0
- data/app/pb_kits/playbook/pb_dialog/child_kits/_dialog_body.jsx +21 -0
- data/app/pb_kits/playbook/pb_dialog/child_kits/_dialog_footer.jsx +36 -0
- data/app/pb_kits/playbook/pb_dialog/child_kits/_dialog_header.jsx +68 -0
- data/app/pb_kits/playbook/pb_dialog/dialog.rb +47 -0
- data/app/pb_kits/playbook/pb_dialog/dialog.test.jsx +23 -0
- data/app/pb_kits/playbook/pb_dialog/dialog_header.rb +31 -0
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_compound_components.jsx +53 -0
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_compound_components.md +2 -0
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_default.jsx +27 -0
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_scrollable.jsx +27 -0
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_scrollable.md +2 -0
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_separators.jsx +119 -0
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_separators.md +2 -0
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_should_close_on_overlay.jsx +28 -0
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_should_close_on_overlay.md +2 -0
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_sizes.jsx +93 -0
- data/app/pb_kits/playbook/pb_dialog/docs/example.yml +10 -0
- data/app/pb_kits/playbook/pb_dialog/docs/index.js +6 -0
- data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -1
- data/app/pb_kits/playbook/pb_form/form_builder.rb +4 -2
- data/app/pb_kits/playbook/pb_form/form_builder/action_area.rb +14 -7
- data/app/pb_kits/playbook/pb_form/form_with.rb +0 -1
- data/app/pb_kits/playbook/pb_form/simple_form.html.erb +2 -4
- data/app/pb_kits/playbook/pb_form/simple_form.rb +4 -0
- data/app/pb_kits/playbook/pb_online_status/_online_status.jsx +2 -0
- data/app/pb_kits/playbook/pb_online_status/online_status.html.erb +1 -1
- data/app/pb_kits/playbook/pb_user_badge/_user_badge.jsx +1 -1
- data/app/pb_kits/playbook/react_rails_kits.js +4 -0
- data/lib/playbook/version.rb +2 -1
- metadata +35 -8
- data/app/pb_kits/playbook/pb_form/form_builder/action_area.html.erb +0 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 30941eb0f16c5ea56d646c08cdcdcd5338423bc2d09787995ec11d82725a5cf5
|
|
4
|
+
data.tar.gz: b31ecc30e83182a59de76eeba28a6973b0f9b5dcea13d8c37fabc9959ee0fe18
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0cd98f212aaee69b433a737a3fb49520a8d4d48d2f0f32268c493c14da2672b9808910e11011d11ee883bee8b0756252c43c0b146016ad490598d70b904f522f
|
|
7
|
+
data.tar.gz: 6e8177d180817e06d691f83e377d3a63f93bc367bcb1af0fe051fedc2735a8445142faecd2fab8418fda777d1f243637f8859c36cd2b2cdc270355cc2fe5a063
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
@import 'pb_date_stacked/date_stacked';
|
|
26
26
|
@import 'pb_date_time_stacked/date_time_stacked';
|
|
27
27
|
@import 'pb_date_year_stacked/date_year_stacked';
|
|
28
|
+
@import 'pb_dialog/dialog';
|
|
28
29
|
@import 'pb_distribution_bar/distribution_bar';
|
|
29
30
|
@import 'pb_file_upload/file_upload';
|
|
30
31
|
@import 'pb_filter/filter';
|
|
@@ -16,6 +16,7 @@ kits:
|
|
|
16
16
|
- gauge
|
|
17
17
|
- legend
|
|
18
18
|
- line_graph
|
|
19
|
+
- dialog
|
|
19
20
|
- filter
|
|
20
21
|
- fixed_confirmation_toast
|
|
21
22
|
- flex
|
|
@@ -47,7 +48,6 @@ kits:
|
|
|
47
48
|
- multiple_users
|
|
48
49
|
- multiple_users_stacked
|
|
49
50
|
- nav
|
|
50
|
-
- online_status
|
|
51
51
|
- tags:
|
|
52
52
|
- badge
|
|
53
53
|
- hashtag
|
|
@@ -96,3 +96,4 @@ kits:
|
|
|
96
96
|
- weekday_stacked
|
|
97
97
|
- user
|
|
98
98
|
- user_badge
|
|
99
|
+
|
|
@@ -29,6 +29,7 @@ export DateStacked from './pb_date_stacked/_date_stacked.jsx'
|
|
|
29
29
|
export DateTime from './pb_date_time/_date_time.jsx'
|
|
30
30
|
export DateTimeStacked from './pb_date_time_stacked/_date_time_stacked.jsx'
|
|
31
31
|
export DateYearStacked from './pb_date_year_stacked/_date_year_stacked.jsx'
|
|
32
|
+
export Dialog from './pb_dialog/_dialog.jsx'
|
|
32
33
|
export DistributionBar from './pb_distribution_bar/_distribution_bar.jsx'
|
|
33
34
|
export FileUpload from './pb_file_upload/_file_upload.jsx'
|
|
34
35
|
export Filter from './pb_filter/_filter.jsx'
|
|
@@ -15,6 +15,7 @@ type AvatarProps = {
|
|
|
15
15
|
data?: object,
|
|
16
16
|
dark?: boolean,
|
|
17
17
|
id?: string,
|
|
18
|
+
imageAlt?: string,
|
|
18
19
|
imageUrl: string,
|
|
19
20
|
name: string,
|
|
20
21
|
size?: "md" | "lg" | "sm" | "xl" | "xs",
|
|
@@ -27,7 +28,18 @@ const firstTwoInitials = (name) =>
|
|
|
27
28
|
.substring(0, 2)
|
|
28
29
|
|
|
29
30
|
const Avatar = (props: AvatarProps) => {
|
|
30
|
-
const {
|
|
31
|
+
const {
|
|
32
|
+
aria = {},
|
|
33
|
+
className,
|
|
34
|
+
data = {},
|
|
35
|
+
name = null,
|
|
36
|
+
id = '',
|
|
37
|
+
imageAlt = '',
|
|
38
|
+
imageUrl,
|
|
39
|
+
size = 'md',
|
|
40
|
+
status = null,
|
|
41
|
+
dark = false,
|
|
42
|
+
} = props
|
|
31
43
|
const dataProps = buildDataProps(data)
|
|
32
44
|
const ariaProps = buildAriaProps(aria)
|
|
33
45
|
const classes = classnames(
|
|
@@ -55,7 +67,7 @@ const Avatar = (props: AvatarProps) => {
|
|
|
55
67
|
>
|
|
56
68
|
<If condition={imageUrl && !error}>
|
|
57
69
|
<Image
|
|
58
|
-
alt={
|
|
70
|
+
alt={imageAlt}
|
|
59
71
|
onError={handleError}
|
|
60
72
|
url={imageUrl}
|
|
61
73
|
/>
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
class: object.classname,
|
|
5
5
|
aria: object.aria) do %>
|
|
6
6
|
<%= content_tag(:div, data: { initials: object.initials }, class: "avatar_wrapper") do %>
|
|
7
|
-
<%= pb_rails("image", props: { url: object.image_url, on_error: object.handle_img_error }) if object.image_url.present? %>
|
|
7
|
+
<%= pb_rails("image", props: { alt: object.image_alt, url: object.image_url, on_error: object.handle_img_error }) if object.image_url.present? %>
|
|
8
8
|
<% end %>
|
|
9
9
|
<%= pb_rails("online_status", props: object.online_status_props) if object.status %>
|
|
10
10
|
<% end %>
|
|
@@ -3,8 +3,11 @@
|
|
|
3
3
|
module Playbook
|
|
4
4
|
module PbAvatar
|
|
5
5
|
class Avatar < Playbook::KitBase
|
|
6
|
-
prop :image_url
|
|
7
|
-
prop :
|
|
6
|
+
prop :image_url, type: Playbook::Props::String
|
|
7
|
+
prop :image_alt, type: Playbook::Props::String,
|
|
8
|
+
default: ""
|
|
9
|
+
prop :name, type: Playbook::Props::String,
|
|
10
|
+
default: ""
|
|
8
11
|
prop :size, type: Playbook::Props::Enum,
|
|
9
12
|
values: %w[xs sm md base lg xl],
|
|
10
13
|
default: "md"
|
|
@@ -5,23 +5,26 @@ import Avatar from './_avatar'
|
|
|
5
5
|
|
|
6
6
|
const imageUrl = 'https://randomuser.me/api/portraits/men/44.jpg',
|
|
7
7
|
testId = 'tjohnson',
|
|
8
|
-
name = 'Terry Johnson'
|
|
8
|
+
name = 'Terry Johnson',
|
|
9
|
+
imageAlt = 'Terry Johnson Standing'
|
|
9
10
|
|
|
10
11
|
test('loads the given image url and name', () => {
|
|
11
12
|
render(
|
|
12
13
|
<Avatar
|
|
13
14
|
data={{ testid: testId }}
|
|
15
|
+
imageAlt={imageAlt}
|
|
14
16
|
imageUrl={imageUrl}
|
|
15
17
|
name={name}
|
|
16
18
|
/>
|
|
17
19
|
)
|
|
18
20
|
|
|
19
21
|
const kit = screen.getByTestId(testId)
|
|
20
|
-
const image = screen.getByAltText(
|
|
22
|
+
const image = screen.getByAltText(imageAlt)
|
|
21
23
|
const initials = name.split(/\s/)[0].substr(0, 1) + name.split(/\s/)[1].substr(0, 1)
|
|
22
24
|
|
|
23
25
|
expect(kit).toHaveClass('pb_avatar_kit_md')
|
|
24
26
|
expect(kit).toHaveAttribute('data-initials', initials)
|
|
25
27
|
expect(image).toHaveAttribute('data-src', imageUrl)
|
|
26
28
|
expect(image).toHaveAttribute('src', imageUrl)
|
|
29
|
+
expect(image).toHaveAttribute('alt', imageAlt)
|
|
27
30
|
})
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<%= pb_rails("avatar", props: {
|
|
2
2
|
name: "Terry Johnson",
|
|
3
3
|
size: "xs",
|
|
4
|
+
image_alt: "Terry Johnson Standing",
|
|
4
5
|
image_url: "https://randomuser.me/api/portraits/men/44.jpg",
|
|
5
6
|
status: "online"
|
|
6
7
|
}) %>
|
|
@@ -10,6 +11,7 @@
|
|
|
10
11
|
<%= pb_rails("avatar", props: {
|
|
11
12
|
name: "Terry Johnson",
|
|
12
13
|
size: "sm",
|
|
14
|
+
image_alt: "Terry Johnson Standing",
|
|
13
15
|
image_url: "https://randomuser.me/api/portraits/men/44.jpg",
|
|
14
16
|
status: "away"
|
|
15
17
|
}) %>
|
|
@@ -19,6 +21,7 @@
|
|
|
19
21
|
<%= pb_rails("avatar", props: {
|
|
20
22
|
name: "Terry Johnson",
|
|
21
23
|
size: "md",
|
|
24
|
+
image_alt: "Terry Johnson Standing",
|
|
22
25
|
image_url: "https://randomuser.me/api/portraits/men/44.jpg",
|
|
23
26
|
status: "offline"
|
|
24
27
|
}) %>
|
|
@@ -28,6 +31,7 @@
|
|
|
28
31
|
<%= pb_rails("avatar", props: {
|
|
29
32
|
name: "Terry Johnson",
|
|
30
33
|
size: "lg",
|
|
34
|
+
image_alt: "Terry Johnson Standing",
|
|
31
35
|
image_url: "https://randomuser.me/api/portraits/men/44.jpg",
|
|
32
36
|
status: "online"
|
|
33
37
|
}) %>
|
|
@@ -37,6 +41,7 @@
|
|
|
37
41
|
<%= pb_rails("avatar", props: {
|
|
38
42
|
name: "Terry Johnson",
|
|
39
43
|
size: "xl",
|
|
44
|
+
image_alt: "Terry Johnson Standing",
|
|
40
45
|
image_url: "https://randomuser.me/api/portraits/men/44.jpg",
|
|
41
46
|
status: "away"
|
|
42
47
|
}) %>
|
|
@@ -5,6 +5,7 @@ const AvatarDefault = (props) => {
|
|
|
5
5
|
return (
|
|
6
6
|
<div>
|
|
7
7
|
<Avatar
|
|
8
|
+
imageAlt="Terry Johnson Standing"
|
|
8
9
|
imageUrl="https://randomuser.me/api/portraits/men/44.jpg"
|
|
9
10
|
name="Terry Johnson"
|
|
10
11
|
size="xs"
|
|
@@ -13,6 +14,7 @@ const AvatarDefault = (props) => {
|
|
|
13
14
|
/>
|
|
14
15
|
<br />
|
|
15
16
|
<Avatar
|
|
17
|
+
imageAlt="Terry Johnson Standing"
|
|
16
18
|
imageUrl="https://randomuser.me/api/portraits/men/44.jpg"
|
|
17
19
|
name="Terry Johnson"
|
|
18
20
|
size="sm"
|
|
@@ -21,6 +23,7 @@ const AvatarDefault = (props) => {
|
|
|
21
23
|
/>
|
|
22
24
|
<br />
|
|
23
25
|
<Avatar
|
|
26
|
+
imageAlt="Terry Johnson Standing"
|
|
24
27
|
imageUrl="https://randomuser.me/api/portraits/men/44.jpg"
|
|
25
28
|
name="Terry Johnson"
|
|
26
29
|
size="md"
|
|
@@ -29,6 +32,7 @@ const AvatarDefault = (props) => {
|
|
|
29
32
|
/>
|
|
30
33
|
<br />
|
|
31
34
|
<Avatar
|
|
35
|
+
imageAlt="Terry Johnson Standing"
|
|
32
36
|
imageUrl="https://randomuser.me/api/portraits/men/44.jpg"
|
|
33
37
|
name="Terry Johnson"
|
|
34
38
|
size="lg"
|
|
@@ -37,6 +41,7 @@ const AvatarDefault = (props) => {
|
|
|
37
41
|
/>
|
|
38
42
|
<br />
|
|
39
43
|
<Avatar
|
|
44
|
+
imageAlt="Terry Johnson Standing"
|
|
40
45
|
imageUrl="https://randomuser.me/api/portraits/men/44.jpg"
|
|
41
46
|
name="Terry Johnson"
|
|
42
47
|
size="xl"
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<%= pb_rails("avatar", props: {
|
|
2
2
|
name: "Terry Johnson",
|
|
3
3
|
size: "sm",
|
|
4
|
+
image_alt: "Terry Johnson Status",
|
|
4
5
|
image_url: "https://randomuser.me/api/portraits/men/44.jpg"
|
|
5
6
|
}) %>
|
|
6
7
|
|
|
@@ -9,6 +10,7 @@
|
|
|
9
10
|
<%= pb_rails("avatar", props: {
|
|
10
11
|
name: "Terry Johnson",
|
|
11
12
|
size: "sm",
|
|
13
|
+
image_alt: "Terry Johnson Online",
|
|
12
14
|
image_url: "https://randomuser.me/api/portraits/men/44.jpg",
|
|
13
15
|
status: "online"
|
|
14
16
|
}) %>
|
|
@@ -18,6 +20,7 @@
|
|
|
18
20
|
<%= pb_rails("avatar", props: {
|
|
19
21
|
name: "Terry Johnson",
|
|
20
22
|
size: "sm",
|
|
23
|
+
image_alt: "Terry Johnson Away",
|
|
21
24
|
image_url: "https://randomuser.me/api/portraits/men/44.jpg",
|
|
22
25
|
status: "away"
|
|
23
26
|
}) %>
|
|
@@ -27,6 +30,7 @@
|
|
|
27
30
|
<%= pb_rails("avatar", props: {
|
|
28
31
|
name: "Terry Johnson",
|
|
29
32
|
size: "sm",
|
|
33
|
+
image_alt: "Terry Johnson Offline",
|
|
30
34
|
image_url: "https://randomuser.me/api/portraits/men/44.jpg",
|
|
31
35
|
status: "offline"
|
|
32
36
|
}) %>
|
|
@@ -5,6 +5,7 @@ const AvatarStatus = (props) => {
|
|
|
5
5
|
return (
|
|
6
6
|
<>
|
|
7
7
|
<Avatar
|
|
8
|
+
imageAlt="Terry Johnson Status"
|
|
8
9
|
imageUrl="https://randomuser.me/api/portraits/men/44.jpg"
|
|
9
10
|
name="Terry Johnson"
|
|
10
11
|
size="sm"
|
|
@@ -14,6 +15,7 @@ const AvatarStatus = (props) => {
|
|
|
14
15
|
<br />
|
|
15
16
|
|
|
16
17
|
<Avatar
|
|
18
|
+
imageAlt="Terry Johnson Online"
|
|
17
19
|
imageUrl="https://randomuser.me/api/portraits/men/44.jpg"
|
|
18
20
|
name="Terry Johnson"
|
|
19
21
|
size="sm"
|
|
@@ -24,6 +26,7 @@ const AvatarStatus = (props) => {
|
|
|
24
26
|
<br />
|
|
25
27
|
|
|
26
28
|
<Avatar
|
|
29
|
+
imageAlt="Terry Johnson Away"
|
|
27
30
|
imageUrl="https://randomuser.me/api/portraits/men/44.jpg"
|
|
28
31
|
name="Terry Johnson"
|
|
29
32
|
size="sm"
|
|
@@ -34,6 +37,7 @@ const AvatarStatus = (props) => {
|
|
|
34
37
|
<br />
|
|
35
38
|
|
|
36
39
|
<Avatar
|
|
40
|
+
imageAlt="Terry Johnson Offline"
|
|
37
41
|
imageUrl="https://randomuser.me/api/portraits/men/44.jpg"
|
|
38
42
|
name="Terry Johnson"
|
|
39
43
|
size="sm"
|
|
@@ -15,10 +15,12 @@ import { globalProps } from '../utilities/globalProps.js'
|
|
|
15
15
|
type AvatarActionButtonProps = {
|
|
16
16
|
action?: string,
|
|
17
17
|
aria: Object,
|
|
18
|
+
linkAriaLabel?: string,
|
|
18
19
|
className?: string,
|
|
19
20
|
dark?: boolean,
|
|
20
21
|
data?: Object,
|
|
21
22
|
id?: string,
|
|
23
|
+
imageAlt?: string,
|
|
22
24
|
imageUrl?: string,
|
|
23
25
|
linkUrl?: string,
|
|
24
26
|
name?: string,
|
|
@@ -31,10 +33,12 @@ const AvatarActionButton = (props: AvatarActionButtonProps) => {
|
|
|
31
33
|
const {
|
|
32
34
|
action = 'add',
|
|
33
35
|
aria = {},
|
|
36
|
+
linkAriaLabel,
|
|
34
37
|
className,
|
|
35
38
|
dark = false,
|
|
36
39
|
data = {},
|
|
37
40
|
id,
|
|
41
|
+
imageAlt = '',
|
|
38
42
|
imageUrl,
|
|
39
43
|
linkUrl,
|
|
40
44
|
name,
|
|
@@ -67,10 +71,12 @@ const AvatarActionButton = (props: AvatarActionButtonProps) => {
|
|
|
67
71
|
id={id}
|
|
68
72
|
>
|
|
69
73
|
<a
|
|
74
|
+
aria-label={linkAriaLabel}
|
|
70
75
|
href={linkUrl}
|
|
71
76
|
onClick={onClick}
|
|
72
77
|
>
|
|
73
78
|
<Avatar
|
|
79
|
+
imageAlt={imageAlt}
|
|
74
80
|
imageUrl={imageUrl}
|
|
75
81
|
name={name}
|
|
76
82
|
size={size}
|
|
@@ -14,11 +14,12 @@
|
|
|
14
14
|
<% end %>
|
|
15
15
|
<% end %>
|
|
16
16
|
|
|
17
|
-
<%= link_to object.link_url, id: object.tooltip_id do %>
|
|
17
|
+
<%= link_to object.link_url, id: object.tooltip_id, 'aria-label': object.link_aria_label do %>
|
|
18
18
|
<%= pb_rails("avatar", props: {
|
|
19
19
|
dark: object.dark,
|
|
20
20
|
name: object.name,
|
|
21
21
|
size: object.size,
|
|
22
|
+
image_alt: object.image_alt,
|
|
22
23
|
image_url: object.image_url,
|
|
23
24
|
class: "avatar_action"
|
|
24
25
|
}) %>
|
|
@@ -5,6 +5,8 @@ module Playbook
|
|
|
5
5
|
class AvatarActionButton < Playbook::KitBase
|
|
6
6
|
prop :action, type: Playbook::Props::String,
|
|
7
7
|
default: "add"
|
|
8
|
+
prop :link_aria_label, type: Playbook::Props::String
|
|
9
|
+
prop :image_alt, type: Playbook::Props::String
|
|
8
10
|
prop :image_url, type: Playbook::Props::String
|
|
9
11
|
prop :link_url, type: Playbook::Props::String, default: "#"
|
|
10
12
|
prop :tooltip_text, type: Playbook::Props::String
|
data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_actions.html.erb
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
<div class="pb--doc-demo-row">
|
|
2
2
|
|
|
3
3
|
<%= pb_rails("avatar_action_button", props: {
|
|
4
|
+
link_aria_label: "Add Sophia Carden",
|
|
4
5
|
name: "Sophia Carden",
|
|
6
|
+
image_alt: "Add Sophia Carden",
|
|
5
7
|
image_url: "https://randomuser.me/api/portraits/women/8.jpg",
|
|
6
8
|
action: "add",
|
|
7
9
|
}) %>
|
|
8
10
|
|
|
9
11
|
<%= pb_rails("avatar_action_button", props: {
|
|
12
|
+
link_aria_label: "Remove Sophia Carden",
|
|
10
13
|
name: "Sophia Carden",
|
|
14
|
+
image_alt: "Remove Sophia Carden",
|
|
11
15
|
image_url: "https://randomuser.me/api/portraits/women/8.jpg",
|
|
12
16
|
action: "remove",
|
|
13
17
|
}) %>
|
|
@@ -5,13 +5,17 @@ const AvatarActionButtonActions = (props) => (
|
|
|
5
5
|
<div className="pb--doc-demo-row">
|
|
6
6
|
<AvatarActionButton
|
|
7
7
|
action="add"
|
|
8
|
+
imageAlt="Add Sophia Carden"
|
|
8
9
|
imageUrl="https://randomuser.me/api/portraits/women/8.jpg"
|
|
10
|
+
linkAriaLabel="Add Sophia Carden"
|
|
9
11
|
name="Sophia Carden"
|
|
10
12
|
{...props}
|
|
11
13
|
/>
|
|
12
14
|
<AvatarActionButton
|
|
13
15
|
action="remove"
|
|
16
|
+
imageAlt="Remove Sophia Carden"
|
|
14
17
|
imageUrl="https://randomuser.me/api/portraits/women/8.jpg"
|
|
18
|
+
linkAriaLabel="Remove Sophia Carden"
|
|
15
19
|
name="Sophia Carden"
|
|
16
20
|
{...props}
|
|
17
21
|
/>
|
|
@@ -4,7 +4,9 @@ import { AvatarActionButton } from '../../'
|
|
|
4
4
|
const AvatarActionButtonDefault = (props) => (
|
|
5
5
|
<div className="pb--doc-demo-row">
|
|
6
6
|
<AvatarActionButton
|
|
7
|
+
imageAlt="Sophia Carden"
|
|
7
8
|
imageUrl="https://randomuser.me/api/portraits/women/8.jpg"
|
|
9
|
+
linkAriaLabel="Sophia Carden"
|
|
8
10
|
name="Sophia Carden"
|
|
9
11
|
{...props}
|
|
10
12
|
/>
|
|
@@ -4,7 +4,9 @@ import { AvatarActionButton } from '../../'
|
|
|
4
4
|
const AvatarActionButtonOnClick = (props) => (
|
|
5
5
|
<div className="pb--doc-demo-row">
|
|
6
6
|
<AvatarActionButton
|
|
7
|
+
imageAlt="Sophia Carden"
|
|
7
8
|
imageUrl="https://randomuser.me/api/portraits/women/8.jpg"
|
|
9
|
+
linkAriaLabel="Alert Sophia Carden"
|
|
8
10
|
linkUrl="https://www.google.com"
|
|
9
11
|
name="Sophia Carden"
|
|
10
12
|
onClick={() => alert('clicked!')}
|
data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_onclick.html.erb
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
<div class="pb--doc-demo-row">
|
|
2
2
|
|
|
3
3
|
<%= pb_rails("avatar_action_button", props: {
|
|
4
|
+
link_aria_label: "Alert Sophia Carden",
|
|
4
5
|
name: "Sophia Carden",
|
|
5
6
|
id: "clickable",
|
|
6
7
|
link_url: "http://www.google.com",
|
|
8
|
+
image_alt: "Sophia Carden",
|
|
7
9
|
image_url: "https://randomuser.me/api/portraits/women/8.jpg",
|
|
8
10
|
}) %>
|
|
9
11
|
|
data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_placement.html.erb
CHANGED
|
@@ -1,25 +1,33 @@
|
|
|
1
1
|
<div class="pb--doc-demo-row">
|
|
2
2
|
|
|
3
3
|
<%= pb_rails("avatar_action_button", props: {
|
|
4
|
+
link_aria_label: "Sophia Carden",
|
|
4
5
|
name: "Sophia Carden",
|
|
6
|
+
image_alt: "Sophia Carden",
|
|
5
7
|
image_url: "https://randomuser.me/api/portraits/women/8.jpg",
|
|
6
8
|
placement: "bottom_left"
|
|
7
9
|
}) %>
|
|
8
10
|
|
|
9
11
|
<%= pb_rails("avatar_action_button", props: {
|
|
12
|
+
link_aria_label: "Sophia Carden",
|
|
10
13
|
name: "Sophia Carden",
|
|
14
|
+
image_alt: "Sophia Carden",
|
|
11
15
|
image_url: "https://randomuser.me/api/portraits/women/8.jpg",
|
|
12
16
|
placement: "bottom_right"
|
|
13
17
|
}) %>
|
|
14
18
|
|
|
15
19
|
<%= pb_rails("avatar_action_button", props: {
|
|
20
|
+
link_aria_label: "Sophia Carden",
|
|
16
21
|
name: "Sophia Carden",
|
|
22
|
+
image_alt: "Sophia Carden",
|
|
17
23
|
image_url: "https://randomuser.me/api/portraits/women/8.jpg",
|
|
18
24
|
placement: "top_left"
|
|
19
25
|
}) %>
|
|
20
26
|
|
|
21
27
|
<%= pb_rails("avatar_action_button", props: {
|
|
28
|
+
link_aria_label: "Sophia Carden",
|
|
22
29
|
name: "Sophia Carden",
|
|
30
|
+
image_alt: "Sophia Carden",
|
|
23
31
|
image_url: "https://randomuser.me/api/portraits/women/8.jpg",
|
|
24
32
|
placement: "top_right"
|
|
25
33
|
}) %>
|