playbook_ui 14.12.0.pre.alpha.playrailsinputmaskissue5775 → 14.12.0.pre.alpha.playrailsinputmaskissue5933

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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/Components/TableHeaderCell.tsx +10 -3
  3. data/app/pb_kits/playbook/pb_advanced_table/Utilities/ActionBarAnimationHelper.ts +26 -0
  4. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +6 -6
  5. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +34 -21
  6. data/app/pb_kits/playbook/pb_avatar/_avatar.scss +9 -0
  7. data/app/pb_kits/playbook/pb_avatar/_avatar.tsx +11 -7
  8. data/app/pb_kits/playbook/pb_avatar/avatar.html.erb +6 -7
  9. data/app/pb_kits/playbook/pb_avatar/docs/_avatar_badge_component_overlay.jsx +9 -3
  10. data/app/pb_kits/playbook/pb_avatar/docs/_avatar_circle_icon_component_overlay.jsx +6 -2
  11. data/app/pb_kits/playbook/pb_button/button.rb +1 -1
  12. data/app/pb_kits/playbook/pb_copy_button/_copy_button.scss +2 -1
  13. data/app/pb_kits/playbook/pb_copy_button/copy_button.html.erb +15 -0
  14. data/app/pb_kits/playbook/pb_copy_button/copy_button.rb +28 -0
  15. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_default.html.erb +2 -0
  16. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_from.html.erb +5 -0
  17. data/app/pb_kits/playbook/pb_copy_button/docs/example.yml +3 -3
  18. data/app/pb_kits/playbook/pb_copy_button/index.js +47 -0
  19. data/app/pb_kits/playbook/pb_file_upload/file_upload.html.erb +1 -6
  20. data/app/pb_kits/playbook/pb_filter/filter.html.erb +1 -5
  21. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_auto_close.html.erb +58 -0
  22. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_auto_close_rails.md +3 -0
  23. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/example.yml +1 -0
  24. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/index.js +7 -5
  25. data/app/pb_kits/playbook/pb_form_group/form_group.html.erb +1 -6
  26. data/app/pb_kits/playbook/pb_form_pill/form_pill.html.erb +1 -1
  27. data/app/pb_kits/playbook/pb_link/_link.tsx +18 -0
  28. data/app/pb_kits/playbook/pb_link/docs/_link_target.html.erb +15 -0
  29. data/app/pb_kits/playbook/pb_link/docs/_link_target.jsx +29 -0
  30. data/app/pb_kits/playbook/pb_link/docs/example.yml +5 -3
  31. data/app/pb_kits/playbook/pb_link/docs/index.js +2 -1
  32. data/app/pb_kits/playbook/pb_link/link.html.erb +1 -1
  33. data/app/pb_kits/playbook/pb_link/link.rb +6 -0
  34. data/app/pb_kits/playbook/pb_link/link.test.jsx +30 -0
  35. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_tooltip.html.erb +6 -6
  36. data/app/pb_kits/playbook/pb_table/docs/_table_with_background_kit.html.erb +6 -9
  37. data/app/pb_kits/playbook/pb_table/docs/_table_with_background_kit.jsx +6 -9
  38. data/app/pb_kits/playbook/pb_table/styles/_desktop_collapse.scss +26 -0
  39. data/app/pb_kits/playbook/pb_table/styles/_mobile.scss +0 -1
  40. data/app/pb_kits/playbook/pb_table/styles/_mobile_collapse.scss +25 -0
  41. data/app/pb_kits/playbook/pb_table/styles/_tablet_collapse.scss +25 -0
  42. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_mask.html.erb +1 -1
  43. data/app/pb_kits/playbook/pb_text_input/index.js +12 -42
  44. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_default.html.erb +1 -1
  45. data/app/pb_kits/playbook/pb_tooltip/index.js +45 -27
  46. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +5 -1
  47. data/app/pb_kits/playbook/pb_user/_user.tsx +3 -0
  48. data/app/pb_kits/playbook/pb_user/docs/_user_light_weight.html.erb +42 -0
  49. data/app/pb_kits/playbook/pb_user/docs/_user_light_weight.jsx +59 -0
  50. data/app/pb_kits/playbook/pb_user/docs/_user_light_weight.md +2 -0
  51. data/app/pb_kits/playbook/pb_user/docs/example.yml +2 -0
  52. data/app/pb_kits/playbook/pb_user/docs/index.js +1 -0
  53. data/app/pb_kits/playbook/pb_user/user.html.erb +1 -1
  54. data/app/pb_kits/playbook/pb_user/user.rb +1 -0
  55. data/app/pb_kits/playbook/pb_user/user.test.js +14 -0
  56. data/dist/chunks/{_typeahead-BIhRQo8Q.js → _typeahead-qhstadx9.js} +3 -3
  57. data/dist/chunks/_weekday_stacked-CAHsfiaG.js +45 -0
  58. data/dist/chunks/{lib-kMuhBuU7.js → lib-DjpLC8uO.js} +1 -1
  59. data/dist/chunks/{pb_form_validation-DBJ0wZuS.js → pb_form_validation-S56UaHZl.js} +1 -1
  60. data/dist/chunks/vendor.js +1 -1
  61. data/dist/menu.yml +2 -2
  62. data/dist/playbook-doc.js +1 -1
  63. data/dist/playbook-rails-react-bindings.js +1 -1
  64. data/dist/playbook-rails.js +1 -1
  65. data/dist/playbook.css +1 -1
  66. data/lib/playbook/version.rb +1 -1
  67. metadata +20 -7
  68. data/dist/chunks/_weekday_stacked-CttHBFW3.js +0 -45
  69. /data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/{_fixed_confirmation_toast_auto_close.md → _fixed_confirmation_toast_auto_close_react.md} +0 -0
@@ -1,5 +1,4 @@
1
1
  import PbEnhancedElement from '../pb_enhanced_element'
2
-
3
2
  import {
4
3
  createPopperLite as createPopper,
5
4
  flip,
@@ -17,27 +16,34 @@ export default class PbTooltip extends PbEnhancedElement {
17
16
 
18
17
  connect() {
19
18
  this.triggerElements.forEach((trigger) => {
20
- trigger.addEventListener('mouseenter', () => {
21
- this.mouseenterTimeout = setTimeout(() => {
22
- this.showTooltip(trigger)
23
- this.checkCloseTooltip(trigger)
24
- }, TOOLTIP_TIMEOUT)
19
+ const method = this.triggerMethod
25
20
 
26
- trigger.addEventListener('mouseleave', () => {
21
+ if (method === 'click') {
22
+ trigger.addEventListener('click', () => {
23
+ this.showTooltip(trigger)
24
+ })
25
+ } else {
26
+ trigger.addEventListener('mouseenter', () => {
27
+ this.mouseenterTimeout = setTimeout(() => {
28
+ this.showTooltip(trigger)
29
+ this.checkCloseTooltip(trigger)
30
+ }, TOOLTIP_TIMEOUT)
31
+
32
+ trigger.addEventListener('mouseleave', () => {
33
+ clearTimeout(this.mouseenterTimeout)
34
+ setTimeout(() => {
35
+ this.hideTooltip()
36
+ }, 0)
37
+ }, { once: true })
38
+ })
39
+
40
+ this.tooltip.addEventListener('mouseenter', () => {
27
41
  clearTimeout(this.mouseenterTimeout)
28
-
29
- setTimeout(() => {
30
- this.hideTooltip()
31
- }, 0)
32
- }, { once: true })
33
- })
34
- })
35
-
36
- this.tooltip.addEventListener('mouseenter', () => {
37
- clearTimeout(this.mouseenterTimeout)
38
- })
39
- this.tooltip.addEventListener('mouseleave', () => {
40
- this.hideTooltip()
42
+ })
43
+ this.tooltip.addEventListener('mouseleave', () => {
44
+ this.hideTooltip()
45
+ })
46
+ }
41
47
  })
42
48
  }
43
49
 
@@ -54,7 +60,7 @@ export default class PbTooltip extends PbEnhancedElement {
54
60
  }
55
61
 
56
62
  showTooltip(trigger) {
57
- if (this.shouldShowTooltip === "false") return
63
+ if (this.shouldShowTooltip === 'false') return
58
64
 
59
65
  this.popper = createPopper(trigger, this.tooltip, {
60
66
  placement: this.position,
@@ -78,6 +84,13 @@ export default class PbTooltip extends PbEnhancedElement {
78
84
  ],
79
85
  })
80
86
  this.tooltip.classList.add('show')
87
+
88
+ if (this.triggerMethod === 'click') {
89
+ clearTimeout(this.autoHideTimeout)
90
+ this.autoHideTimeout = setTimeout(() => {
91
+ this.hideTooltip()
92
+ }, 1000)
93
+ }
81
94
  }
82
95
 
83
96
  hideTooltip() {
@@ -94,25 +107,26 @@ export default class PbTooltip extends PbEnhancedElement {
94
107
  let triggerEl
95
108
 
96
109
  if (this.triggerElementId) {
97
- triggerEl = document.querySelector(`#${this.triggerElementId}`) //deprecated
110
+ triggerEl = document.querySelector(`#${this.triggerElementId}`)
98
111
  } else {
99
112
  const selectorIsId = this.triggerElementSelector.indexOf('#') > -1
100
- triggerEl = selectorIsId ? document.querySelector(`${this.triggerElementSelector}`) :
101
- document.querySelectorAll(`${this.triggerElementSelector}`)
113
+ triggerEl = selectorIsId
114
+ ? document.querySelector(`${this.triggerElementSelector}`)
115
+ : document.querySelectorAll(`${this.triggerElementSelector}`)
102
116
  }
103
117
 
104
118
  if (!triggerEl) {
105
- /* eslint no-console: ["error", { allow: ["warn", "error"] }] */
106
119
  console.error('Tooltip Kit: an invalid or unavailable DOM reference was provided!')
107
120
  return []
108
121
  }
109
122
 
110
123
  if (!triggerEl.length) triggerEl = [triggerEl]
111
- return this._triggerElements = (this._triggerElements || triggerEl)
124
+ return (this._triggerElements = this._triggerElements || triggerEl)
112
125
  }
113
126
 
114
127
  get tooltip() {
115
- return this._tooltip = (this._tooltip || this.element.querySelector(`#${this.tooltipId}`))
128
+ return (this._tooltip =
129
+ this._tooltip || this.element.querySelector(`#${this.tooltipId}`))
116
130
  }
117
131
 
118
132
  get position() {
@@ -134,4 +148,8 @@ export default class PbTooltip extends PbEnhancedElement {
134
148
  get shouldShowTooltip() {
135
149
  return this.element.dataset.pbTooltipShowTooltip
136
150
  }
151
+
152
+ get triggerMethod() {
153
+ return this.element.dataset.pbTooltipTriggerMethod || 'hover'
154
+ }
137
155
  }
@@ -9,6 +9,9 @@ module Playbook
9
9
  prop :tooltip_id
10
10
  prop :dark, type: Playbook::Props::Boolean,
11
11
  default: false
12
+ prop :trigger_method, type: Playbook::Props::Enum,
13
+ values: %w[hover click],
14
+ default: "hover"
12
15
 
13
16
  def classname
14
17
  generate_classname("pb_tooltip_kit", dark_class)
@@ -21,7 +24,8 @@ module Playbook
21
24
  pb_tooltip_trigger_element_selector: trigger_element_selector,
22
25
  pb_tooltip_trigger_element_id: trigger_element_id,
23
26
  pb_tooltip_tooltip_id: tooltip_id,
24
- pb_tooltip_show_tooltip: true
27
+ pb_tooltip_show_tooltip: true,
28
+ pb_tooltip_trigger_method: trigger_method
25
29
  )
26
30
  end
27
31
 
@@ -13,6 +13,7 @@ type UserProps = {
13
13
  aria?: {[key: string]: string},
14
14
  avatar?: boolean,
15
15
  avatarUrl?: string,
16
+ bold?: boolean,
16
17
  className?: string,
17
18
  dark?: boolean,
18
19
  data?: {[key: string]: string},
@@ -32,6 +33,7 @@ const User = (props: UserProps): React.ReactElement => {
32
33
  aria = {},
33
34
  avatar = false,
34
35
  avatarUrl,
36
+ bold = true,
35
37
  className,
36
38
  dark = false,
37
39
  data = {},
@@ -75,6 +77,7 @@ const User = (props: UserProps): React.ReactElement => {
75
77
  }
76
78
  <div className="content_wrapper">
77
79
  <Title
80
+ bold={bold}
78
81
  dark={dark}
79
82
  size={size == 'lg' ? 3 : 4}
80
83
  text={name}
@@ -0,0 +1,42 @@
1
+ <div class="pb--doc-demo-row">
2
+ <div>
3
+ <%= pb_rails("user", props: {
4
+ name: "Anna Black",
5
+ title: "Remodeling Consultant",
6
+ orientation: "vertical",
7
+ align: "center",
8
+ size: "lg",
9
+ avatar_url: "https://randomuser.me/api/portraits/women/44.jpg",
10
+ bold: false
11
+ }) %>
12
+ </div>
13
+ <div>
14
+ <%= pb_rails("user", props: {
15
+ name: "Anna Black",
16
+ title: "Remodeling Consultant",
17
+ orientation: "horizontal",
18
+ align: "left",
19
+ avatar_url: "https://randomuser.me/api/portraits/women/44.jpg",
20
+ bold: false
21
+ }) %>
22
+ </div>
23
+ <div>
24
+ <%= pb_rails("user", props: {
25
+ name: "Anna Black",
26
+ orientation: "horizontal",
27
+ align: "left",
28
+ avatar_url: "https://randomuser.me/api/portraits/women/44.jpg",
29
+ bold: false
30
+ }) %>
31
+
32
+ <br>
33
+
34
+ <%= pb_rails("user", props: {
35
+ name: "Anna Black",
36
+ orientation: "horizontal",
37
+ align: "left",
38
+ avatar: true,
39
+ bold: false
40
+ }) %>
41
+ </div>
42
+ </div>
@@ -0,0 +1,59 @@
1
+ import React from 'react'
2
+ import { User } from 'playbook-ui'
3
+
4
+ const UserLightWeight = (props) => {
5
+ return (
6
+ <div className="pb--doc-demo-row">
7
+
8
+ <div>
9
+ <User
10
+ align="center"
11
+ avatarUrl="https://randomuser.me/api/portraits/women/44.jpg"
12
+ bold={false}
13
+ name="Anna Black"
14
+ orientation="vertical"
15
+ size="lg"
16
+ title="Remodeling Consultant"
17
+ {...props}
18
+ />
19
+ </div>
20
+
21
+ <div>
22
+ <User
23
+ align="left"
24
+ avatarUrl="https://randomuser.me/api/portraits/women/44.jpg"
25
+ bold={false}
26
+ name="Anna Black"
27
+ orientation="horizontal"
28
+ title="Remodeling Consultant"
29
+ {...props}
30
+ />
31
+ </div>
32
+
33
+ <div>
34
+ <User
35
+ align="left"
36
+ avatarUrl="https://randomuser.me/api/portraits/women/44.jpg"
37
+ bold={false}
38
+ name="Anna Black"
39
+ orientation="horizontal"
40
+ {...props}
41
+ />
42
+
43
+ <br />
44
+
45
+ <User
46
+ align="left"
47
+ avatar
48
+ bold={false}
49
+ name="Anna Black"
50
+ orientation="horizontal"
51
+ {...props}
52
+ />
53
+ </div>
54
+
55
+ </div>
56
+ )
57
+ }
58
+
59
+ export default UserLightWeight
@@ -0,0 +1,2 @@
1
+ ##### Prop
2
+ Name will use `font-weight: 700` by default, if you want a lighter font weight, use the `bold` prop set to `false`. Name will then use `font-weight: 300`.
@@ -2,6 +2,7 @@ examples:
2
2
 
3
3
  rails:
4
4
  - user_default: Default
5
+ - user_light_weight: Light Weight
5
6
  - user_with_territory: With Territory
6
7
  - user_text_only: Text Only
7
8
  - user_size: Horizontal Size
@@ -11,6 +12,7 @@ examples:
11
12
 
12
13
  react:
13
14
  - user_default: Default
15
+ - user_light_weight: Light Weight
14
16
  - user_with_territory: With Territory
15
17
  - user_text_only: Text Only
16
18
  - user_size: Horizontal Size
@@ -1,4 +1,5 @@
1
1
  export { default as UserDefault } from './_user_default.jsx'
2
+ export { default as UserLightWeight } from './_user_light_weight.jsx'
2
3
  export { default as UserWithTerritory } from './_user_with_territory.jsx'
3
4
  export { default as UserTextOnly } from './_user_text_only.jsx'
4
5
  export { default as UserSize } from './_user_size.jsx'
@@ -12,7 +12,7 @@
12
12
  }) %>
13
13
  <% end %>
14
14
  <%= content_tag(:div, class: "content_wrapper") do %>
15
- <%= pb_rails("title", props: { text: object.name, size: object.title_size, dark: object.dark }) %>
15
+ <%= pb_rails("title", props: { text: object.name, size: object.title_size, dark: object.dark, bold: object.bold }) %>
16
16
  <%= pb_rails("body", props: {
17
17
  text: "#{object.details}",
18
18
  dark: object.dark,
@@ -9,6 +9,7 @@ module Playbook
9
9
  prop :avatar, type: Playbook::Props::Boolean,
10
10
  default: false
11
11
  prop :avatar_url
12
+ prop :bold, type: Playbook::Props::Boolean, default: true
12
13
  prop :name
13
14
  prop :orientation, type: Playbook::Props::Enum,
14
15
  values: %w[vertical horizontal],
@@ -26,3 +26,17 @@ test('subtitle prop accepts a node', () => {
26
26
 
27
27
  expect(screen.getByTestId('test-subtitle-block')).toHaveTextContent('test caption')
28
28
  })
29
+
30
+ test('bold prop applies correct styling when false', () => {
31
+ render(
32
+ <User
33
+ bold={false}
34
+ data={{ testid: 'test-bold-false' }}
35
+ name="Anna Black"
36
+ />
37
+ )
38
+ const titleElement = screen.getByText("Anna Black")
39
+ expect(titleElement).toBeInTheDocument()
40
+
41
+ expect(titleElement).toHaveClass('pb_title_kit_size_4_thin')
42
+ })