playbook_ui 14.13.0.pre.alpha.PLAY1856doc6166 → 14.13.0.pre.alpha.PLAY1873rails86087

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.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +1 -0
  3. data/app/pb_kits/playbook/pb_avatar_action_button/_avatar_action_button.scss +66 -0
  4. data/app/pb_kits/playbook/pb_avatar_action_button/_avatar_action_button.tsx +98 -0
  5. data/app/pb_kits/playbook/pb_avatar_action_button/avatar_action_button.html.erb +28 -0
  6. data/app/pb_kits/playbook/pb_avatar_action_button/avatar_action_button.rb +42 -0
  7. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_actions.html.erb +19 -0
  8. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_actions.jsx +26 -0
  9. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_default.html.erb +10 -0
  10. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_default.jsx +17 -0
  11. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_on_click.jsx +19 -0
  12. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_onclick.html.erb +16 -0
  13. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_placement.html.erb +35 -0
  14. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_placement.jsx +42 -0
  15. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_tooltip.html.erb +13 -0
  16. data/app/pb_kits/playbook/pb_avatar_action_button/docs/example.yml +15 -0
  17. data/app/pb_kits/playbook/pb_avatar_action_button/docs/index.js +4 -0
  18. data/app/pb_kits/playbook/pb_avatar_action_button/pb_avatar_action_button.test.js +31 -0
  19. data/app/pb_kits/playbook/pb_bar_graph/docs/example.yml +0 -1
  20. data/app/pb_kits/playbook/pb_bar_graph/docs/index.js +0 -1
  21. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table.html.erb +2 -2
  22. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table.md +1 -4
  23. data/app/pb_kits/playbook/pb_draggable/docs/example.yml +0 -2
  24. data/app/pb_kits/playbook/pb_draggable/docs/index.js +1 -2
  25. data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableContainer.tsx +4 -7
  26. data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableItem.tsx +3 -6
  27. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.jsx +36 -71
  28. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.jsx +6 -6
  29. data/app/pb_kits/playbook/pb_drawer/docs/example.yml +0 -1
  30. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.html.erb +6 -1
  31. data/app/pb_kits/playbook/pb_nav/item.html.erb +19 -7
  32. data/app/pb_kits/playbook/pb_nav/nav.html.erb +8 -3
  33. data/app/pb_kits/playbook/pb_online_status/online_status.html.erb +6 -1
  34. data/app/pb_kits/playbook/pb_popover/popover.html.erb +6 -1
  35. data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.scss +1 -2
  36. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.html.erb +0 -1
  37. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.jsx +0 -7
  38. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible.jsx +1 -1
  39. data/app/pb_kits/playbook/pb_table/docs/example.yml +0 -1
  40. data/app/pb_kits/playbook/pb_table/index.ts +9 -41
  41. data/app/pb_kits/playbook/pb_table/styles/_collapsible.scss +0 -4
  42. data/app/pb_kits/playbook/pb_table/subcomponents/_table_body.tsx +2 -29
  43. data/app/pb_kits/playbook/pb_table/subcomponents/_table_row.tsx +3 -31
  44. data/app/pb_kits/playbook/pb_table/table_body.html.erb +7 -13
  45. data/app/pb_kits/playbook/pb_table/table_body.rb +0 -2
  46. data/app/pb_kits/playbook/pb_table/table_row.html.erb +7 -14
  47. data/app/pb_kits/playbook/pb_table/table_row.rb +1 -14
  48. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_mask.html.erb +0 -14
  49. data/app/pb_kits/playbook/pb_text_input/index.js +0 -9
  50. data/app/pb_kits/playbook/pb_text_input/text_input.rb +2 -5
  51. data/dist/chunks/{_typeahead-CAIQfP7X.js → _typeahead-DQTwAd_2.js} +4 -4
  52. data/dist/chunks/_weekday_stacked-ei-exO-N.js +45 -0
  53. data/dist/chunks/{lib-D3us1bGD.js → lib-WQEeEj3t.js} +1 -1
  54. data/dist/chunks/{pb_form_validation-BpihMSOQ.js → pb_form_validation-Cq64l4zn.js} +1 -1
  55. data/dist/chunks/vendor.js +1 -1
  56. data/dist/menu.yml +7 -0
  57. data/dist/playbook-doc.js +1 -1
  58. data/dist/playbook-rails-react-bindings.js +1 -1
  59. data/dist/playbook-rails.js +1 -1
  60. data/dist/playbook.css +1 -1
  61. data/lib/playbook/version.rb +1 -1
  62. metadata +25 -17
  63. data/app/pb_kits/playbook/pb_bar_graph/BarGraphStyles.scss +0 -58
  64. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.jsx +0 -64
  65. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.md +0 -1
  66. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table_react.jsx +0 -90
  67. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table_react.md +0 -5
  68. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.md +0 -1
  69. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.html.erb +0 -51
  70. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click_rails.md +0 -2
  71. data/dist/chunks/_weekday_stacked-Dq02Kbeo.js +0 -45
  72. /data/app/pb_kits/playbook/pb_table/docs/{_table_with_collapsible_with_custom_click_react.md → _table_with_collapsible_with_custom_click.md} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0c8c78420782988bab01929b844343a9351bb6d664032a4c69e7e8af20da169a
4
- data.tar.gz: 428d83bf48e70f2dcc354bc2a8d96e6f6a0906117717cb8963982b572f2395e6
3
+ metadata.gz: e08365da5253269e56718df0229fb325a9904ae790a197f4d9498972990d5e20
4
+ data.tar.gz: 2fd146a0b22bd09f5b4dbe54a16a3b438a7a24bb360f3a476c307645e8b6fc5b
5
5
  SHA512:
6
- metadata.gz: 2b0d24de756436a380a8c7a55ded51eb922834b4356ce2d7f45211201b72e46e68f064af4fc583f10f8c3366e32eb0dcf1fde143a6602e308aa908f52f8a10a3
7
- data.tar.gz: '0996317c488d86f20a67376e79913b403f0f9f767074c86745d721cc20a4ee0bfcf1322a6afab2ecb5662ab4b3d538209f1acabb3c47a2efe08756e563bf4e44'
6
+ metadata.gz: 79d14e319ea738d2959955de82a9eac69637d27eba8efad3549f520b7c9ce95ee4ed704e4e7451f8aca6ffc633cccab31a1306bd03ca8b6127eaceeb3f16a01c
7
+ data.tar.gz: 734cff649221dc31c3a2eb03c73d9bc27df9aa28642bb0e190f41317ef0896fd8b9decc85e2e6587d7c2f7a660e1cefd2f7a151dd4ec4264652e6eb44f610557
@@ -1,6 +1,7 @@
1
1
 
2
2
  @import 'pb_advanced_table/advanced_table';
3
3
  @import 'pb_avatar/avatar';
4
+ @import 'pb_avatar_action_button/avatar_action_button';
4
5
  @import 'pb_background/background';
5
6
  @import 'pb_badge/badge';
6
7
  @import 'pb_bar_graph/bar_graph';
@@ -0,0 +1,66 @@
1
+ [class^=pb_avatar_action_button_kit] {
2
+
3
+ $icon_size: 0px;
4
+ $border_size: 0px;
5
+
6
+ $action-colors: (
7
+ "add": $primary,
8
+ "remove": $error,
9
+ );
10
+
11
+ @each $key, $value in $action-colors {
12
+ &[class*=_#{$key}] a {
13
+ color: $value;
14
+ }
15
+ }
16
+
17
+ @mixin icon-base {
18
+ &.dark{
19
+ background-color: $bg_dark
20
+ }
21
+ width: $icon_size;
22
+ height: $icon_size;
23
+ position: absolute;
24
+ background-color: $white;
25
+ border-radius: $icon_size;
26
+ font-size: ($icon_size - $border_size * 2);
27
+ display: flex;
28
+ justify-content: center;
29
+ align-items: center;
30
+ z-index: 1;
31
+ }
32
+
33
+ @each $name, $size in $avatar-sizes {
34
+
35
+ &[class*=_#{$name}] {
36
+
37
+ $avatar_size: map-get($avatar-sizes, $name);
38
+ $icon_size: $avatar_size / 2;
39
+ $border_size: $icon_size / 10;
40
+
41
+ position: relative;
42
+ width: $avatar_size * 1.25;
43
+ height: $avatar_size * 1.1;
44
+ display: flex;
45
+
46
+ [class^=pb_tooltip_kit] {
47
+ justify-self: center;
48
+ }
49
+
50
+ &[class*=_bottom] .icon {
51
+ @include icon-base;
52
+ top: $icon_size * 1.27;
53
+ }
54
+ &[class*=_top] .icon {
55
+ @include icon-base;
56
+ bottom: $icon_size * 1.27;
57
+ }
58
+ &[class*=_right] .icon {
59
+ left: $icon_size * 1.5;
60
+ }
61
+ &[class*=_left] [class^=pb_avatar_kit] {
62
+ padding-left: $icon_size / 2;
63
+ }
64
+ }
65
+ }
66
+ }
@@ -0,0 +1,98 @@
1
+ import React from 'react'
2
+ import classnames from 'classnames'
3
+
4
+ import {
5
+ buildAriaProps,
6
+ buildCss,
7
+ buildDataProps,
8
+ buildHtmlProps } from '../utilities/props'
9
+ import { globalProps } from '../utilities/globalProps'
10
+
11
+ import Avatar from '../pb_avatar/_avatar'
12
+ import Icon from '../pb_icon/_icon'
13
+
14
+ type AvatarActionButtonProps = {
15
+ action?: "add" | "remove",
16
+ aria?: {[key: string]: string},
17
+ linkAriaLabel?: string,
18
+ className?: string,
19
+ dark?: boolean,
20
+ data?: {[key: string]: string},
21
+ htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
22
+ id?: string,
23
+ imageAlt?: string,
24
+ imageUrl?: string,
25
+ linkUrl?: string,
26
+ name?: string,
27
+ onClick?: React.MouseEventHandler<HTMLSpanElement>,
28
+ placement?: string,
29
+ size?: "md" | "lg" | "sm" | "xl" | "xs" | "xxs",
30
+ }
31
+
32
+ const AvatarActionButton = (props: AvatarActionButtonProps): React.ReactElement => {
33
+ const {
34
+ action = 'add',
35
+ aria = {},
36
+ linkAriaLabel,
37
+ className,
38
+ dark = false,
39
+ data = {},
40
+ htmlOptions = {},
41
+ id,
42
+ imageAlt = '',
43
+ imageUrl,
44
+ linkUrl,
45
+ name,
46
+ onClick,
47
+ placement = 'bottom left',
48
+ size = 'md',
49
+ } = props
50
+
51
+ const ariaProps = buildAriaProps(aria)
52
+ const dataProps = buildDataProps(data)
53
+ const htmlProps = buildHtmlProps(htmlOptions)
54
+
55
+ const classes = classnames(buildCss(
56
+ 'pb_avatar_action_button_kit',
57
+ action,
58
+ placement,
59
+ size),
60
+ globalProps(props),
61
+ className)
62
+
63
+ const icons = {
64
+ add: 'plus-circle',
65
+ remove: 'times-circle',
66
+ }
67
+
68
+ return (
69
+ <div
70
+ {...ariaProps}
71
+ {...dataProps}
72
+ {...htmlProps}
73
+ className={classes}
74
+ id={id}
75
+ >
76
+ <a
77
+ aria-label={linkAriaLabel}
78
+ href={linkUrl}
79
+ onClick={onClick}
80
+ >
81
+ <Avatar
82
+ imageAlt={imageAlt}
83
+ imageUrl={imageUrl}
84
+ name={name}
85
+ size={size}
86
+ />
87
+ <div className={`icon ${dark ? 'dark' : ''}`}>
88
+ <Icon
89
+ dark={dark}
90
+ icon={icons[action]}
91
+ />
92
+ </div>
93
+ </a>
94
+ </div>
95
+ )
96
+ }
97
+
98
+ export default AvatarActionButton
@@ -0,0 +1,28 @@
1
+ <%= pb_content_tag do %>
2
+ <% if object.tooltip_text.present? %>
3
+ <%= pb_rails("tooltip", props: {
4
+ trigger_element_id: object.tooltip_id,
5
+ tooltip_id: "tooltip-2",
6
+ position: 'top'
7
+ }) do %>
8
+ <%= object.tooltip_text %>
9
+ <% end %>
10
+ <% end %>
11
+
12
+ <%= link_to object.link_url, id: object.tooltip_id, 'aria-label': object.link_aria_label do %>
13
+ <%= pb_rails("avatar", props: {
14
+ dark: object.dark,
15
+ name: object.name,
16
+ size: object.size,
17
+ image_alt: object.image_alt,
18
+ image_url: object.image_url,
19
+ class: "avatar_action"
20
+ }) %>
21
+ <div class="icon <%= object.dark ? 'dark' : '' %> ">
22
+ <%= pb_rails("icon", props: {
23
+ dark: object.dark,
24
+ icon: object.action_icons
25
+ }) %>
26
+ </div>
27
+ <% end %>
28
+ <% end %>
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module PbAvatarActionButton
5
+ class AvatarActionButton < Playbook::KitBase
6
+ prop :action, type: Playbook::Props::String,
7
+ default: "add"
8
+ prop :link_aria_label, type: Playbook::Props::String
9
+ prop :image_alt, type: Playbook::Props::String
10
+ prop :image_url, type: Playbook::Props::String
11
+ prop :link_url, type: Playbook::Props::String, default: "#"
12
+ prop :tooltip_text, type: Playbook::Props::String
13
+ prop :tooltip_id, type: Playbook::Props::String
14
+ prop :name, type: Playbook::Props::String,
15
+ default: ""
16
+ prop :size, type: Playbook::Props::Enum,
17
+ values: %w[xs sm md lg xl],
18
+ default: "md"
19
+ prop :placement, type: Playbook::Props::Enum,
20
+ values: %w[bottom_left bottom_right top_left top_right],
21
+ default: "bottom_left"
22
+
23
+ def classname
24
+ generate_classname("pb_avatar_action_button_kit", action, size, placement)
25
+ end
26
+
27
+ def action_icons
28
+ icon_hash = {
29
+ add: "plus-circle",
30
+ remove: "times-circle",
31
+ }
32
+ # if an 'action' prop is passed that isn't
33
+ # in the icon_hash an empty string is returned
34
+ # instead of a null value, which would break the page
35
+
36
+ # double pipe ruby syntax below is essentially a reduced if-else statement
37
+ # if icon_hash[action.to_sym] returns a falsey value, return "" instead
38
+ icon_hash[action.to_sym] ||= ""
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,19 @@
1
+ <div class="pb--doc-demo-row">
2
+
3
+ <%= pb_rails("avatar_action_button", props: {
4
+ link_aria_label: "Add Sophia Carden",
5
+ name: "Sophia Carden",
6
+ image_alt: "Add Sophia Carden",
7
+ image_url: "https://randomuser.me/api/portraits/women/8.jpg",
8
+ action: "add",
9
+ }) %>
10
+
11
+ <%= pb_rails("avatar_action_button", props: {
12
+ link_aria_label: "Remove Sophia Carden",
13
+ name: "Sophia Carden",
14
+ image_alt: "Remove Sophia Carden",
15
+ image_url: "https://randomuser.me/api/portraits/women/8.jpg",
16
+ action: "remove",
17
+ }) %>
18
+
19
+ </div>
@@ -0,0 +1,26 @@
1
+ import React from 'react'
2
+
3
+ import AvatarActionButton from '../_avatar_action_button'
4
+
5
+ const AvatarActionButtonActions = (props) => (
6
+ <div className="pb--doc-demo-row">
7
+ <AvatarActionButton
8
+ action="add"
9
+ imageAlt="Add Sophia Carden"
10
+ imageUrl="https://randomuser.me/api/portraits/women/8.jpg"
11
+ linkAriaLabel="Add Sophia Carden"
12
+ name="Sophia Carden"
13
+ {...props}
14
+ />
15
+ <AvatarActionButton
16
+ action="remove"
17
+ imageAlt="Remove Sophia Carden"
18
+ imageUrl="https://randomuser.me/api/portraits/women/8.jpg"
19
+ linkAriaLabel="Remove Sophia Carden"
20
+ name="Sophia Carden"
21
+ {...props}
22
+ />
23
+ </div>
24
+ )
25
+
26
+ export default AvatarActionButtonActions
@@ -0,0 +1,10 @@
1
+ <div class="pb--doc-demo-row">
2
+
3
+ <%= pb_rails("avatar_action_button", props: {
4
+ link_aria_label: "Sophia Carden",
5
+ name: "Sophia Carden",
6
+ image_alt: "Sophia Carden",
7
+ image_url: "https://randomuser.me/api/portraits/women/8.jpg"
8
+ }) %>
9
+
10
+ </div>
@@ -0,0 +1,17 @@
1
+ import React from 'react'
2
+
3
+ import AvatarActionButton from '../_avatar_action_button'
4
+
5
+ const AvatarActionButtonDefault = (props) => (
6
+ <div className="pb--doc-demo-row">
7
+ <AvatarActionButton
8
+ imageAlt="Sophia Carden"
9
+ imageUrl="https://randomuser.me/api/portraits/women/8.jpg"
10
+ linkAriaLabel="Sophia Carden"
11
+ name="Sophia Carden"
12
+ {...props}
13
+ />
14
+ </div>
15
+ )
16
+
17
+ export default AvatarActionButtonDefault
@@ -0,0 +1,19 @@
1
+ import React from 'react'
2
+
3
+ import AvatarActionButton from '../_avatar_action_button'
4
+
5
+ const AvatarActionButtonOnClick = (props) => (
6
+ <div className="pb--doc-demo-row">
7
+ <AvatarActionButton
8
+ imageAlt="Sophia Carden"
9
+ imageUrl="https://randomuser.me/api/portraits/women/8.jpg"
10
+ linkAriaLabel="Alert Sophia Carden"
11
+ linkUrl="https://www.google.com"
12
+ name="Sophia Carden"
13
+ onClick={() => alert('clicked!')}
14
+ {...props}
15
+ />
16
+ </div>
17
+ )
18
+
19
+ export default AvatarActionButtonOnClick
@@ -0,0 +1,16 @@
1
+ <div class="pb--doc-demo-row">
2
+
3
+ <%= pb_rails("avatar_action_button", props: {
4
+ link_aria_label: "Alert Sophia Carden",
5
+ name: "Sophia Carden",
6
+ id: "clickable",
7
+ link_url: "http://www.google.com",
8
+ image_alt: "Sophia Carden",
9
+ image_url: "https://randomuser.me/api/portraits/women/8.jpg",
10
+ }) %>
11
+
12
+ <%= javascript_tag do %>
13
+ document.querySelector('#clickable').addEventListener('click', () => alert('clickable clicked!'))
14
+ <% end %>
15
+
16
+ </div>
@@ -0,0 +1,35 @@
1
+ <div class="pb--doc-demo-row">
2
+
3
+ <%= pb_rails("avatar_action_button", props: {
4
+ link_aria_label: "Sophia Carden",
5
+ name: "Sophia Carden",
6
+ image_alt: "Sophia Carden",
7
+ image_url: "https://randomuser.me/api/portraits/women/8.jpg",
8
+ placement: "bottom_left"
9
+ }) %>
10
+
11
+ <%= pb_rails("avatar_action_button", props: {
12
+ link_aria_label: "Sophia Carden",
13
+ name: "Sophia Carden",
14
+ image_alt: "Sophia Carden",
15
+ image_url: "https://randomuser.me/api/portraits/women/8.jpg",
16
+ placement: "bottom_right"
17
+ }) %>
18
+
19
+ <%= pb_rails("avatar_action_button", props: {
20
+ link_aria_label: "Sophia Carden",
21
+ name: "Sophia Carden",
22
+ image_alt: "Sophia Carden",
23
+ image_url: "https://randomuser.me/api/portraits/women/8.jpg",
24
+ placement: "top_left"
25
+ }) %>
26
+
27
+ <%= pb_rails("avatar_action_button", props: {
28
+ link_aria_label: "Sophia Carden",
29
+ name: "Sophia Carden",
30
+ image_alt: "Sophia Carden",
31
+ image_url: "https://randomuser.me/api/portraits/women/8.jpg",
32
+ placement: "top_right"
33
+ }) %>
34
+
35
+ </div>
@@ -0,0 +1,42 @@
1
+ import React from 'react'
2
+
3
+ import AvatarActionButton from '../_avatar_action_button'
4
+
5
+ const AvatarActionButtonPlacement = (props) => (
6
+ <div className="pb--doc-demo-row">
7
+ <AvatarActionButton
8
+ imageAlt="Sophia Carden"
9
+ imageUrl="https://randomuser.me/api/portraits/women/8.jpg"
10
+ linkAriaLabel="Sophia Carden"
11
+ name="Sophia Carden"
12
+ placement="bottom_left"
13
+ {...props}
14
+ />
15
+ <AvatarActionButton
16
+ imageAlt="Sophia Carden"
17
+ imageUrl="https://randomuser.me/api/portraits/women/8.jpg"
18
+ linkAriaLabel="Sophia Carden"
19
+ name="Sophia Carden"
20
+ placement="bottom_right"
21
+ {...props}
22
+ />
23
+ <AvatarActionButton
24
+ imageAlt="Sophia Carden"
25
+ imageUrl="https://randomuser.me/api/portraits/women/8.jpg"
26
+ linkAriaLabel="Sophia Carden"
27
+ name="Sophia Carden"
28
+ placement="top_left"
29
+ {...props}
30
+ />
31
+ <AvatarActionButton
32
+ imageAlt="Sophia Carden"
33
+ imageUrl="https://randomuser.me/api/portraits/women/8.jpg"
34
+ linkAriaLabel="Sophia Carden"
35
+ name="Sophia Carden"
36
+ placement="top_right"
37
+ {...props}
38
+ />
39
+ </div>
40
+ )
41
+
42
+ export default AvatarActionButtonPlacement
@@ -0,0 +1,13 @@
1
+ <div class="pb--doc-demo-row">
2
+
3
+ <%= pb_rails("avatar_action_button", props: {
4
+ link_aria_label: "Sophia Carden",
5
+ name: "Sophia Carden",
6
+ link_url: "http://www.google.com",
7
+ image_alt: "Sophia Carden",
8
+ image_url: "https://randomuser.me/api/portraits/women/8.jpg",
9
+ tooltip_text: "Tooltip Text",
10
+ tooltip_id: "avatar_1",
11
+ }) %>
12
+
13
+ </div>
@@ -0,0 +1,15 @@
1
+ examples:
2
+
3
+ rails:
4
+ - avatar_action_button_default: Default
5
+ - avatar_action_button_placement: Placement
6
+ - avatar_action_button_actions: Actions
7
+ - avatar_action_button_onclick: On Click
8
+ - avatar_action_button_tooltip: Tooltip
9
+
10
+
11
+ react:
12
+ - avatar_action_button_default: Default
13
+ - avatar_action_button_placement: Placement
14
+ - avatar_action_button_actions: Actions
15
+ - avatar_action_button_on_click: On Click
@@ -0,0 +1,4 @@
1
+ export { default as AvatarActionButtonDefault } from './_avatar_action_button_default.jsx'
2
+ export { default as AvatarActionButtonPlacement } from './_avatar_action_button_placement.jsx'
3
+ export { default as AvatarActionButtonActions } from './_avatar_action_button_actions.jsx'
4
+ export { default as AvatarActionButtonOnClick } from './_avatar_action_button_on_click.jsx'
@@ -0,0 +1,31 @@
1
+ import React from 'react'
2
+ import { render, screen } from '../utilities/test-utils'
3
+
4
+ import AvatarActionButton from './_avatar_action_button'
5
+
6
+ const imageUrl = 'https://randomuser.me/api/portraits/women/8.jpg',
7
+ testId = 'scarden',
8
+ name = 'Sophia Carden',
9
+ imageAlt = 'Sophia Carden Profile'
10
+
11
+ test('loads the given image url and name', () => {
12
+ render(
13
+ <AvatarActionButton
14
+ data={{ testid: testId }}
15
+ imageAlt={imageAlt}
16
+ imageUrl={imageUrl}
17
+ linkAriaLabel={name}
18
+ name={name}
19
+ />
20
+ )
21
+
22
+ const kit = screen.getByTestId(testId)
23
+ const image = screen.getByAltText(imageAlt)
24
+ const link = kit.children[0]
25
+
26
+ expect(kit).toHaveClass('pb_avatar_action_button_kit_add_bottom_left_md')
27
+ expect(image).toHaveAttribute('data-src', imageUrl)
28
+ expect(image).toHaveAttribute('src', imageUrl)
29
+ expect(image).toHaveAttribute('alt', imageAlt)
30
+ expect(link).toHaveAttribute('aria-label', name)
31
+ })
@@ -17,7 +17,6 @@ examples:
17
17
 
18
18
  react:
19
19
  - bar_graph_default: Default
20
- - bar_graph_pb_styles: Playbook Styles
21
20
  - bar_graph_legend: Legend
22
21
  - bar_graph_legend_position: Legend Position
23
22
  - bar_graph_legend_non_clickable: Legend Non Clickable
@@ -10,4 +10,3 @@ export { default as BarGraphStacked } from './_bar_graph_stacked.jsx'
10
10
  export { default as BarGraphNegativeNumbers } from './_bar_graph_negative_numbers.jsx'
11
11
  export { default as BarGraphSecondaryYAxis } from './_bar_graph_secondary_y_axis.jsx'
12
12
  export { default as BarGraphHorizontal } from './_bar_graph_horizontal.jsx'
13
- export { default as BarGraphPbStyles } from './_bar_graph_pb_styles.jsx'
@@ -43,9 +43,9 @@
43
43
  <% end %>
44
44
  <% end %>
45
45
 
46
- <%= pb_rails("table/table_body", props: {draggable_container: true}) do %>
46
+ <%= pb_rails("draggable/draggable_container", props: {tag:"tbody"}) do %>
47
47
  <% initial_items.each do |item| %>
48
- <%= pb_rails("table/table_row", props:{drag_id: item[:id], draggable_item: true}) do %>
48
+ <%= pb_rails("draggable/draggable_item", props:{drag_id: item[:id], tag:"tr"}) do %>
49
49
  <%= pb_rails("table/table_cell", props: { text: item[:id]}) %>
50
50
  <%= pb_rails("table/table_cell") do %>
51
51
  <%= pb_rails("flex", props:{align:"center"}) do %>
@@ -1,4 +1 @@
1
- The draggable kit can also be used in conjunction with the table kit to create draggable table rows. To do this:
2
-
3
- - use the `draggable_container` prop on the table/table_body to designate it as the Draggable Container
4
- - use the `draggable_item` prop on the table/table_row to designate it as the Draggable Item. Make sure to also pass id to the `drag_id` prop here.
1
+ The draggable kit can also be used in conjunction with the table kit to create draggable table rows. To do this, make use of the `tag` prop on the draggable_container to set it to 'tbody' and the same prop on the draggable_item to set that to 'tr'. This will create the functionality seen here.
@@ -4,9 +4,7 @@ examples:
4
4
  - draggable_with_list: Draggable with List Kit
5
5
  - draggable_with_selectable_list: Draggable with SelectableList Kit
6
6
  - draggable_with_cards: Draggable with Cards
7
- - draggable_with_table_react: Draggable with Table
8
7
  - draggable_multiple_containers: Dragging Across Multiple Containers
9
-
10
8
  rails:
11
9
  - draggable_default_rails: Default
12
10
  - draggable_with_list_rails: Draggable with List Kit
@@ -2,5 +2,4 @@ export { default as DraggableDefault } from './_draggable_default.jsx'
2
2
  export { default as DraggableWithCards } from './_draggable_with_cards.jsx'
3
3
  export { default as DraggableWithList } from './_draggable_with_list.jsx'
4
4
  export { default as DraggableWithSelectableList } from './_draggable_with_selectable_list.jsx'
5
- export { default as DraggableMultipleContainers } from './_draggable_multiple_containers.jsx'
6
- export { default as DraggableWithTableReact } from './_draggable_with_table_react.jsx'
5
+ export { default as DraggableMultipleContainers } from './_draggable_multiple_containers.jsx'
@@ -17,11 +17,10 @@ type DraggableContainerProps = {
17
17
  data?: { [key: string]: string };
18
18
  htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
19
19
  id?: string;
20
- tag?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span' | 'div' | 'tr' | 'th' | 'td' | 'thead' | 'col' | 'tbody',
21
20
  };
22
21
 
23
22
  const DraggableContainer = (props: DraggableContainerProps) => {
24
- const { aria = {}, children, className, container, data = {}, htmlOptions = {}, id, tag="div" } = props;
23
+ const { aria = {}, children, className, container, data = {}, htmlOptions = {}, id } = props;
25
24
 
26
25
  const { handleDragOver, handleDrop, activeContainer } = DraggableContext();
27
26
 
@@ -29,8 +28,6 @@ const DraggableContainer = (props: DraggableContainerProps) => {
29
28
  const dataProps = buildDataProps(data);
30
29
  const htmlProps = buildHtmlProps(htmlOptions);
31
30
 
32
- const Tag: React.ReactElement | any = `${tag}`;
33
-
34
31
  const classes = classnames(
35
32
  buildCss("pb_draggable_container"),
36
33
  `${activeContainer === container ? "active" : ""}`,
@@ -39,18 +36,18 @@ const DraggableContainer = (props: DraggableContainerProps) => {
39
36
  );
40
37
 
41
38
  return (
42
- <Tag
39
+ <div
43
40
  {...ariaProps}
44
41
  {...dataProps}
45
42
  {...htmlProps}
46
43
  className={classes}
47
44
  id={id}
48
45
  key={container}
49
- onDragOver={(e: Event) => handleDragOver(e, container)}
46
+ onDragOver={(e) => handleDragOver(e, container)}
50
47
  onDrop={() => handleDrop(container)}
51
48
  >
52
49
  {children}
53
- </Tag>
50
+ </div>
54
51
  );
55
52
  };
56
53
 
@@ -18,11 +18,10 @@ type DraggableItemProps = {
18
18
  htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
19
19
  id?: string;
20
20
  dragId?: string;
21
- tag?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span' | 'div' | 'tr' | 'th' | 'td' | 'thead' | 'col' | 'tbody',
22
21
  };
23
22
 
24
23
  const DraggableItem = (props: DraggableItemProps) => {
25
- const { aria = {}, children, className, container, data = {}, htmlOptions = {}, id, dragId, tag="div" } = props;
24
+ const { aria = {}, children, className, container, data = {}, htmlOptions = {}, id, dragId } = props;
26
25
 
27
26
  const { isDragging, handleDragStart, handleDragEnter, handleDragEnd } =
28
27
  DraggableContext();
@@ -31,8 +30,6 @@ const DraggableItem = (props: DraggableItemProps) => {
31
30
  const dataProps = buildDataProps(data);
32
31
  const htmlProps = buildHtmlProps(htmlOptions);
33
32
 
34
- const Tag: React.ReactElement | any = `${tag}`;
35
-
36
33
  const classes = classnames(
37
34
  buildCss("pb_draggable_item"),
38
35
  `${isDragging === dragId ? "is_dragging" : ""}`,
@@ -41,7 +38,7 @@ const DraggableItem = (props: DraggableItemProps) => {
41
38
  );
42
39
 
43
40
  return (
44
- <Tag
41
+ <div
45
42
  {...ariaProps}
46
43
  {...dataProps}
47
44
  {...htmlProps}
@@ -54,7 +51,7 @@ const DraggableItem = (props: DraggableItemProps) => {
54
51
  onDragStart={() => handleDragStart(dragId, container)}
55
52
  >
56
53
  {children}
57
- </Tag>
54
+ </div>
58
55
  );
59
56
  };
60
57