playbook_ui 14.13.0.pre.alpha.play1852reacthookformsupportradio6213 → 14.13.0.pre.alpha.play1884progresspill6064

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +1 -0
  3. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +0 -3
  4. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +5 -6
  5. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.rb +1 -8
  6. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props.html.erb +1 -1
  7. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_rails.md +1 -3
  8. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_react.md +1 -1
  9. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +0 -2
  10. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +1 -2
  11. data/app/pb_kits/playbook/pb_avatar_action_button/_avatar_action_button.scss +66 -0
  12. data/app/pb_kits/playbook/pb_avatar_action_button/_avatar_action_button.tsx +98 -0
  13. data/app/pb_kits/playbook/pb_avatar_action_button/avatar_action_button.html.erb +28 -0
  14. data/app/pb_kits/playbook/pb_avatar_action_button/avatar_action_button.rb +42 -0
  15. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_actions.html.erb +19 -0
  16. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_actions.jsx +26 -0
  17. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_default.html.erb +10 -0
  18. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_default.jsx +17 -0
  19. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_on_click.jsx +19 -0
  20. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_onclick.html.erb +16 -0
  21. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_placement.html.erb +35 -0
  22. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_placement.jsx +42 -0
  23. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_tooltip.html.erb +13 -0
  24. data/app/pb_kits/playbook/pb_avatar_action_button/docs/example.yml +15 -0
  25. data/app/pb_kits/playbook/pb_avatar_action_button/docs/index.js +4 -0
  26. data/app/pb_kits/playbook/pb_avatar_action_button/pb_avatar_action_button.test.js +31 -0
  27. data/app/pb_kits/playbook/pb_bar_graph/docs/example.yml +0 -1
  28. data/app/pb_kits/playbook/pb_bar_graph/docs/index.js +0 -1
  29. data/app/pb_kits/playbook/pb_checkbox/_checkbox.tsx +8 -17
  30. data/app/pb_kits/playbook/pb_checkbox/checkbox.test.js +0 -16
  31. data/app/pb_kits/playbook/pb_checkbox/docs/example.yml +1 -2
  32. data/app/pb_kits/playbook/pb_checkbox/docs/index.js +0 -1
  33. data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +1 -3
  34. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table.html.erb +2 -2
  35. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table.md +1 -4
  36. data/app/pb_kits/playbook/pb_draggable/docs/example.yml +0 -2
  37. data/app/pb_kits/playbook/pb_draggable/docs/index.js +1 -2
  38. data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableContainer.tsx +4 -7
  39. data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableItem.tsx +3 -6
  40. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.html.erb +6 -1
  41. data/app/pb_kits/playbook/pb_nav/item.html.erb +19 -7
  42. data/app/pb_kits/playbook/pb_nav/nav.html.erb +8 -3
  43. data/app/pb_kits/playbook/pb_online_status/online_status.html.erb +6 -1
  44. data/app/pb_kits/playbook/pb_overlay/_overlay.tsx +0 -4
  45. data/app/pb_kits/playbook/pb_overlay/docs/example.yml +0 -1
  46. data/app/pb_kits/playbook/pb_overlay/docs/index.js +0 -1
  47. data/app/pb_kits/playbook/pb_overlay/subcomponents/_overlay_token.tsx +10 -48
  48. data/app/pb_kits/playbook/pb_popover/popover.html.erb +6 -1
  49. data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.scss +0 -4
  50. data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.tsx +5 -7
  51. data/app/pb_kits/playbook/pb_progress_pills/docs/example.yml +0 -2
  52. data/app/pb_kits/playbook/pb_progress_pills/docs/index.js +0 -1
  53. data/app/pb_kits/playbook/pb_progress_pills/progress_pills.html.erb +7 -2
  54. data/app/pb_kits/playbook/pb_progress_pills/progress_pills.rb +0 -6
  55. data/app/pb_kits/playbook/pb_progress_pills/progress_pills.test.js +1 -26
  56. data/app/pb_kits/playbook/pb_progress_simple/progress_simple.html.erb +5 -1
  57. data/app/pb_kits/playbook/pb_progress_step/progress_step.html.erb +5 -1
  58. data/app/pb_kits/playbook/pb_progress_step/progress_step_item.html.erb +5 -1
  59. data/app/pb_kits/playbook/pb_radio/_radio.tsx +73 -85
  60. data/app/pb_kits/playbook/pb_radio/docs/example.yml +1 -2
  61. data/app/pb_kits/playbook/pb_radio/docs/index.js +0 -1
  62. data/app/pb_kits/playbook/pb_radio/radio.html.erb +11 -6
  63. data/app/pb_kits/playbook/pb_radio/radio.test.js +0 -16
  64. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible.jsx +1 -1
  65. data/app/pb_kits/playbook/pb_table/docs/example.yml +1 -4
  66. data/app/pb_kits/playbook/pb_table/docs/index.js +1 -2
  67. data/app/pb_kits/playbook/pb_table/index.ts +9 -41
  68. data/app/pb_kits/playbook/pb_table/styles/_collapsible.scss +0 -4
  69. data/app/pb_kits/playbook/pb_table/subcomponents/_table_body.tsx +2 -29
  70. data/app/pb_kits/playbook/pb_table/subcomponents/_table_row.tsx +3 -31
  71. data/app/pb_kits/playbook/pb_table/table_body.html.erb +7 -13
  72. data/app/pb_kits/playbook/pb_table/table_body.rb +0 -2
  73. data/app/pb_kits/playbook/pb_table/table_row.html.erb +7 -14
  74. data/app/pb_kits/playbook/pb_table/table_row.rb +1 -14
  75. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_mask.html.erb +0 -14
  76. data/app/pb_kits/playbook/pb_text_input/index.js +0 -9
  77. data/app/pb_kits/playbook/pb_text_input/text_input.rb +2 -5
  78. data/dist/chunks/_typeahead-btjo1UN5.js +36 -0
  79. data/dist/chunks/{_weekday_stacked-Dze0K01W.js → _weekday_stacked-TIh9nTmZ.js} +3 -3
  80. data/dist/chunks/{lib-D3us1bGD.js → lib-DjpLC8uO.js} +2 -2
  81. data/dist/chunks/{pb_form_validation-BpihMSOQ.js → pb_form_validation-S56UaHZl.js} +1 -1
  82. data/dist/chunks/vendor.js +1 -1
  83. data/dist/menu.yml +7 -0
  84. data/dist/playbook-doc.js +1 -1
  85. data/dist/playbook-rails-react-bindings.js +1 -1
  86. data/dist/playbook-rails.js +1 -1
  87. data/dist/playbook.css +1 -1
  88. data/lib/playbook/version.rb +1 -1
  89. metadata +23 -30
  90. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_custom_cell.jsx +0 -75
  91. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header.html.erb +0 -33
  92. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header_rails.md +0 -3
  93. data/app/pb_kits/playbook/pb_bar_graph/BarGraphStyles.scss +0 -58
  94. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.jsx +0 -64
  95. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.md +0 -1
  96. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_react_hook.jsx +0 -69
  97. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_react_hook.md +0 -1
  98. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table_react.jsx +0 -90
  99. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table_react.md +0 -5
  100. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional.jsx +0 -37
  101. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional_react.md +0 -1
  102. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_full_width.html.erb +0 -1
  103. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_full_width.jsx +0 -18
  104. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_full_width_rails.md +0 -1
  105. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_full_width_react.md +0 -1
  106. data/app/pb_kits/playbook/pb_radio/docs/_radio_react_hook.jsx +0 -60
  107. data/app/pb_kits/playbook/pb_radio/docs/_radio_react_hook.md +0 -1
  108. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.html.erb +0 -51
  109. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click_rails.md +0 -2
  110. data/app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.html.erb +0 -96
  111. data/app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.jsx +0 -101
  112. data/app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.md +0 -1
  113. data/dist/chunks/_typeahead-BdE70xxu.js +0 -36
  114. /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
@@ -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'
@@ -1,4 +1,4 @@
1
- import React, { useEffect, useRef, forwardRef } from 'react'
1
+ import React, { useEffect, useRef } from 'react'
2
2
  import Body from '../pb_body/_body'
3
3
  import Icon from '../pb_icon/_icon'
4
4
  import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from '../utilities/props'
@@ -24,7 +24,7 @@ type CheckboxProps = {
24
24
  value?: string,
25
25
  } & GlobalProps
26
26
 
27
- const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>((props, ref) => {
27
+ const Checkbox = (props: CheckboxProps): React.ReactElement => {
28
28
  const {
29
29
  aria = {},
30
30
  checked = false,
@@ -44,15 +44,7 @@ const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>((props, ref) => {
44
44
  value = '',
45
45
  } = props
46
46
 
47
- const internalRef = useRef<HTMLInputElement>(null)
48
- const setRefs = (el: HTMLInputElement) => {
49
- internalRef.current = el
50
- if (typeof ref === 'function') {
51
- ref(el)
52
- } else if (ref) {
53
- (ref as React.MutableRefObject<HTMLInputElement | null>).current = el
54
- }
55
- }
47
+ const checkRef = useRef(null)
56
48
  const ariaProps = buildAriaProps(aria)
57
49
  const dataProps = buildDataProps(data)
58
50
  const htmlProps = buildHtmlProps(htmlOptions)
@@ -64,9 +56,9 @@ const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>((props, ref) => {
64
56
  )
65
57
 
66
58
  useEffect(() => {
67
- if (internalRef.current) {
68
- internalRef.current.checked = checked
69
- internalRef.current.indeterminate = indeterminate
59
+ if (checkRef.current) {
60
+ checkRef.current.checked = checked
61
+ checkRef.current.indeterminate = indeterminate
70
62
  }
71
63
  }, [indeterminate, checked])
72
64
 
@@ -80,7 +72,7 @@ const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>((props, ref) => {
80
72
  disabled={disabled}
81
73
  name={name}
82
74
  onChange={onChange}
83
- ref={setRefs}
75
+ ref={checkRef}
84
76
  tabIndex={tabIndex}
85
77
  type="checkbox"
86
78
  value={value}
@@ -127,7 +119,6 @@ const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>((props, ref) => {
127
119
  </Body>
128
120
  </label>
129
121
  )
130
- })
122
+ }
131
123
 
132
- Checkbox.displayName = "Checkbox"
133
124
  export default Checkbox
@@ -106,19 +106,3 @@ test('has disabled attribute', () => {
106
106
  const input = kit.querySelector('input')
107
107
  expect(input).toHaveAttribute('disabled')
108
108
  })
109
-
110
- test('has ref in the input element', () => {
111
- const ref = React.createRef()
112
- render(
113
- <Checkbox
114
- data={{ testid: testId }}
115
- name="checkbox-name"
116
- ref={ref}
117
- text="Checkbox"
118
- value="check-box value"
119
- />
120
- )
121
-
122
- expect(ref.current).not.toBeNull()
123
- expect(ref.current?.tagName).toBe('INPUT')
124
- })
@@ -11,7 +11,6 @@ examples:
11
11
  react:
12
12
  - checkbox_default: Default
13
13
  - checkbox_checked: Load as checked
14
- - checkbox_react_hook: React Hook Form
15
14
  - checkbox_custom: Custom Checkbox
16
15
  - checkbox_error: Default w/ Error
17
16
  - checkbox_indeterminate: Indeterminate Checkbox
@@ -22,4 +21,4 @@ examples:
22
21
  - checkbox_error_swift: Default w/ Error
23
22
  - checkbox_indeterminate_swift: Indeterminate Checkbox
24
23
  - checkbox_props_swift: ""
25
-
24
+
@@ -1,6 +1,5 @@
1
1
  export { default as CheckboxDefault } from './_checkbox_default.jsx'
2
2
  export { default as CheckboxCustom } from './_checkbox_custom.jsx'
3
- export { default as CheckboxReactHook } from './_checkbox_react_hook.jsx'
4
3
  export { default as CheckboxError } from './_checkbox_error.jsx'
5
4
  export { default as CheckboxChecked } from './_checkbox_checked.jsx'
6
5
  export { default as CheckboxIndeterminate } from './_checkbox_indeterminate.jsx'
@@ -29,7 +29,6 @@ type DatePickerProps = {
29
29
  hideLabel?: boolean,
30
30
  htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
31
31
  id?: string,
32
- initializeOnce?: boolean,
33
32
  inLine?: boolean,
34
33
  inputAria?: { [key: string]: string },
35
34
  inputData?: { [key: string]: string },
@@ -74,7 +73,6 @@ const DatePicker = (props: DatePickerProps): React.ReactElement => {
74
73
  hideLabel = false,
75
74
  htmlOptions = {},
76
75
  id,
77
- initializeOnce = false,
78
76
  inLine = false,
79
77
  inputAria = {},
80
78
  inputData = {},
@@ -136,7 +134,7 @@ useEffect(() => {
136
134
  yearRange,
137
135
  required: false,
138
136
  }, scrollContainer)
139
- }, initializeOnce ? [] : undefined)
137
+ })
140
138
  const filteredProps = {...props}
141
139
  if (filteredProps.marginBottom === undefined) {
142
140
  filteredProps.marginBottom = "sm"
@@ -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
 
@@ -1,3 +1,8 @@
1
- <%= pb_content_tag do %>
1
+ <%= content_tag(:div,
2
+ aria: object.aria,
3
+ data: object.data,
4
+ id: object.id,
5
+ class: object.classname,
6
+ **combined_html_options) do %>
2
7
  <%= react_component("MultiLevelSelect", object.multi_level_select_options) %>
3
8
  <% end %>
@@ -1,9 +1,15 @@
1
1
  <% if object.collapsible %>
2
2
  <%= pb_rails("collapsible", props: { name: "collapsible-nav-example", classname: object.collapsible_nav_classname }) do %>
3
3
  <%= pb_rails("collapsible/collapsible_main", props: { name: "default-collapsible-nav", icon: object.collapsible_icons, size: "xs", dark: object.dark, classname:object.margin_classes }) do %>
4
- <%= pb_content_tag( object.tag,
5
- href: object.link && object.link,
6
- target: object.link && object.target
4
+ <%= content_tag(object.tag,
5
+ aria: object.aria,
6
+ class: object.classname,
7
+ data: object.data,
8
+ dark: object.dark,
9
+ id: object.id,
10
+ href: object.link && object.link,
11
+ target: object.link && object.target,
12
+ **combined_html_options
7
13
  ) do %>
8
14
  <% if object.image_url %>
9
15
  <%= pb_rails("image", props: { url: object.image_url, classname: "pb_nav_img_wrapper_collapsible" }) %>
@@ -14,16 +20,22 @@
14
20
  <span class="pb_nav_list_item_text_collapsible">
15
21
  <%= object.text %>
16
22
  </span>
17
- <% end %>
23
+ <% end %>
18
24
  <% end %>
19
25
  <%= pb_rails("collapsible/collapsible_content", props: {collapsed: object.collapsed}) do %>
20
26
  <%= content.presence %>
21
27
  <% end %>
22
28
  <% end %>
23
29
  <% else %>
24
- <%= pb_content_tag( object.tag,
25
- href: object.link && object.link,
26
- target: object.link && object.target
30
+ <%= content_tag(object.tag,
31
+ aria: object.aria,
32
+ class: object.classname,
33
+ **combined_html_options,
34
+ data: object.data,
35
+ dark: object.dark,
36
+ id: object.id,
37
+ href: object.link && object.link,
38
+ target: object.link && object.target
27
39
  ) do %>
28
40
  <% if object.image_url %>
29
41
  <%= pb_rails("image", props: { url: object.image_url, classname: "pb_nav_img_wrapper" }) %>
@@ -1,7 +1,12 @@
1
- <%= pb_content_tag(:nav) do %>
1
+ <%= content_tag(:nav,
2
+ aria: object.aria,
3
+ class: object.classname,
4
+ data: object.data,
5
+ id: object.id,
6
+ **combined_html_options) do %>
2
7
  <% if object.title %>
3
- <%= pb_content_tag do %>
4
- <%= pb_content_tag(:a) do %>
8
+ <%= content_tag(:div, class: "pb_nav_list_title") do %>
9
+ <%= content_tag(:a, class: "pb_nav_list_item_link_text", href: object.link) do %>
5
10
  <%= pb_rails("caption", props: { text: object.title, dark: dark }) %>
6
11
  <% end %>
7
12
  <% end %>
@@ -1,2 +1,7 @@
1
- <%= pb_content_tag do %>
1
+ <%= content_tag(:div,
2
+ aria: object.aria.merge!(label: object.status),
3
+ class: object.classname,
4
+ data: object.data,
5
+ id: object.id,
6
+ **combined_html_options) do %>
2
7
  <% end %>
@@ -8,7 +8,6 @@ import OverlayToken from './subcomponents/_overlay_token'
8
8
  export type OverlayChildrenProps = {
9
9
  children: React.ReactNode[] | React.ReactNode,
10
10
  color: "card_light" | "bg_light" | "card_dark" | "bg_dark",
11
- dynamic?: boolean,
12
11
  position: string,
13
12
  size: string,
14
13
  }
@@ -19,7 +18,6 @@ type OverlayProps = {
19
18
  children: React.ReactNode[] | React.ReactNode,
20
19
  color: "card_light" | "bg_light" | "card_dark" | "bg_dark",
21
20
  data?: { [key: string]: string },
22
- dynamic?: false,
23
21
  htmlOptions?: { [key: string]: string | number | boolean | (() => void) },
24
22
  id?: string,
25
23
  layout: { [key: string]: string },
@@ -32,7 +30,6 @@ const Overlay = (props: OverlayProps) => {
32
30
  children,
33
31
  color = "card_light",
34
32
  data = {},
35
- dynamic = false,
36
33
  htmlOptions = {},
37
34
  id,
38
35
  layout = { "bottom": "full" },
@@ -72,7 +69,6 @@ const Overlay = (props: OverlayProps) => {
72
69
  }) : OverlayToken({
73
70
  children,
74
71
  color,
75
- dynamic: dynamic,
76
72
  position: getPosition(),
77
73
  size: getSize()
78
74
  })
@@ -2,7 +2,6 @@ examples:
2
2
  react:
3
3
  - overlay_default: Default
4
4
  - overlay_multi_directional: Multi-directional
5
- - overlay_vertical_dynamic_multi_directional: Vertical Dynamic Multi-directional
6
5
  - overlay_toggle: Toggle
7
6
 
8
7
  rails:
@@ -1,4 +1,3 @@
1
1
  export { default as OverlayDefault } from './_overlay_default.jsx'
2
2
  export { default as OverlayMultiDirectional } from './_overlay_multi_directional.jsx'
3
3
  export { default as OverlayToggle } from './_overlay_toggle.jsx'
4
- export { default as OverlayVerticalDynamicMultiDirectional } from './_overlay_vertical_dynamic_multi_directional.jsx'
@@ -1,5 +1,5 @@
1
- import React, { useRef, useEffect, useState } from 'react';
2
- import { OverlayChildrenProps } from '../_overlay';
1
+ import React from 'react'
2
+ import { OverlayChildrenProps } from '../_overlay'
3
3
 
4
4
  const previousOverlayDirectionMap: { [key: string]: string } = {
5
5
  "x": "left",
@@ -15,40 +15,11 @@ const OverlayToken = (props: OverlayChildrenProps) => {
15
15
  const {
16
16
  children,
17
17
  color,
18
- dynamic,
19
18
  position,
20
19
  size,
21
20
  } = props
22
21
 
23
- const scrollContainerRef = useRef<HTMLDivElement>(null);
24
- const [isAtStart, setIsAtStart] = useState(true);
25
- const [isAtEnd, setIsAtEnd] = useState(false);
26
-
27
-
28
- const handleScroll = () => {
29
- const container = scrollContainerRef.current;
30
- if (container) {
31
- const { scrollLeft, scrollWidth, clientWidth } = container;
32
- const atStart = scrollLeft === 0;
33
- const atEnd = scrollLeft + clientWidth >= scrollWidth - 1;
34
-
35
- setIsAtStart(atStart);
36
- setIsAtEnd(atEnd);
37
- }
38
- };
39
-
40
- useEffect(() => {
41
- const container = scrollContainerRef.current;
42
- if (container) {
43
- container.addEventListener('scroll', handleScroll);
44
- handleScroll();
45
- return () => {
46
- container.removeEventListener('scroll', handleScroll);
47
- };
48
- }
49
- }, []);
50
-
51
- const hasSubsequentOverlay = position === "x" || position === "y";
22
+ const hasSubsequentOverlay = position === "x" || position === "y"
52
23
 
53
24
  const getPreviousOverlayDirection = () => {
54
25
  return hasSubsequentOverlay ? previousOverlayDirectionMap[position] : position
@@ -63,24 +34,15 @@ const OverlayToken = (props: OverlayChildrenProps) => {
63
34
 
64
35
  return (
65
36
  <>
66
- <div className={dynamic ? isAtStart ? '' : previousOverlayClassName : previousOverlayClassName} />
67
- {dynamic ?
68
- <div
69
- ref={scrollContainerRef}
70
- style={{
71
- overflowX: 'auto',
72
- }}
73
- >
74
- {children}
75
- </div>
76
- :
77
- children
78
- }
79
- {hasSubsequentOverlay &&
80
- <div className={dynamic ? isAtEnd ? '' : subsequentOverlayClassName : subsequentOverlayClassName} />
37
+ <div className={previousOverlayClassName} />
38
+
39
+ {children}
40
+
41
+ { hasSubsequentOverlay &&
42
+ <div className={subsequentOverlayClassName} />
81
43
  }
82
44
  </>
83
45
  )
84
46
  }
85
47
 
86
- export default OverlayToken;
48
+ export default OverlayToken
@@ -1,4 +1,9 @@
1
- <%= pb_content_tag do %>
1
+ <%= content_tag(:div,
2
+ aria: object.aria,
3
+ class: object.classname,
4
+ data: object.data,
5
+ id: object.id,
6
+ **combined_html_options) do %>
2
7
  <div class="pb_popover_tooltip hide" id="<%= object.tooltip_id %>" role="tooltip" style="<%= object.z_index_helper %>">
3
8
  <div class="pb_popover_body <%= object.width_height_class_helper %> <%= object.popover_spacing_helper %>" style="<%= object.width_height_helper %>">
4
9
  <%= content.presence %>
@@ -28,10 +28,6 @@
28
28
  [class*=pb_progress_pill] {
29
29
  @include pb_progress_pill;
30
30
 
31
- &.full_width_pill {
32
- max-width: none;
33
- }
34
-
35
31
  &[class*=_inactive] {
36
32
  background-color: $border_light;
37
33
  &.dark {
@@ -13,7 +13,6 @@ type ProgressPillsProps = {
13
13
  className?: string,
14
14
  data?: { [key: string]: string },
15
15
  dark?: boolean,
16
- fullWidthPill?: boolean,
17
16
  htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
18
17
  id?: string,
19
18
  steps?: number,
@@ -21,19 +20,19 @@ type ProgressPillsProps = {
21
20
  value?: string,
22
21
  }
23
22
 
24
- const ProgressPill = ({ active, dark, steps: step, fullWidthPill }: ProgressPillsProps) => (
23
+ const ProgressPill = ({ active, dark, steps: step }: ProgressPillsProps) => (
25
24
  <div
26
25
  className={`pb_progress_pill${step <= active ? '_active' : '_inactive'}${dark ? ' dark' : ''
27
- }${fullWidthPill ? ' full_width_pill' : ''}`}
26
+ }`}
28
27
  key={step}
29
28
  />
30
29
  )
31
30
 
32
- const showSteps = (steps: number, active: number, dark: boolean, fullWidthPill: boolean) => {
31
+ const showSteps = (steps: number, active: number, dark: boolean) => {
33
32
  const items = []
34
33
 
35
34
  for (let step = 1; step <= steps; step++) {
36
- items.push(ProgressPill({ steps: step, active, dark, fullWidthPill }))
35
+ items.push(ProgressPill({ steps: step, active, dark }))
37
36
  }
38
37
 
39
38
  return items
@@ -45,7 +44,6 @@ const ProgressPills = (props: ProgressPillsProps) => {
45
44
  aria = { hidden: 'true' },
46
45
  className,
47
46
  data = {},
48
- fullWidthPill = false,
49
47
  htmlOptions = {},
50
48
  id,
51
49
  steps = 3,
@@ -81,7 +79,7 @@ const ProgressPills = (props: ProgressPillsProps) => {
81
79
  text={value}
82
80
  />
83
81
  </div>}
84
- <div className="progress_pills">{showSteps(steps, active, dark, fullWidthPill)}</div>
82
+ <div className="progress_pills">{showSteps(steps, active, dark)}</div>
85
83
  </div>
86
84
  )
87
85
  }
@@ -3,11 +3,9 @@ examples:
3
3
  rails:
4
4
  - progress_pills_default: Default
5
5
  - progress_pills_status: Status
6
- - progress_pills_full_width: Full Container Width
7
6
 
8
7
 
9
8
 
10
9
  react:
11
10
  - progress_pills_default: Default
12
11
  - progress_pills_status: Status
13
- - progress_pills_full_width: Full Container Width
@@ -1,3 +1,2 @@
1
1
  export { default as ProgressPillsDefault } from './_progress_pills_default.jsx'
2
2
  export { default as ProgressPillsStatus } from './_progress_pills_status.jsx'
3
- export { default as ProgressPillsFullWidth } from './_progress_pills_full_width.jsx'
@@ -1,4 +1,9 @@
1
- <%= pb_content_tag do %>
1
+ <%= content_tag(:div,
2
+ aria: object.aria_attributes,
3
+ id: object.id,
4
+ data: object.data,
5
+ class: object.classname,
6
+ **combined_html_options) do %>
2
7
 
3
8
  <div class="progress_pills_status">
4
9
  <% object.with_status do |status| %>
@@ -9,7 +14,7 @@
9
14
 
10
15
  <div class="progress_pills">
11
16
  <% object.each_step do |step| %>
12
- <span class="pb_progress_pill<%= object.active_step(step) %><%= object.make_full_width %><%= object.dark_pill %>"></span>
17
+ <span class="pb_progress_pill<%= object.active_step(step) %><%= object.dark_pill %>"></span>
13
18
  <% end %>
14
19
  </div>
15
20
 
@@ -9,8 +9,6 @@ module Playbook
9
9
  prop :steps, type: Playbook::Props::Number,
10
10
  default: 3
11
11
  prop :title
12
- prop :full_width_pill, type: Playbook::Props::Boolean,
13
- default: false
14
12
 
15
13
  def classname
16
14
  generate_classname("pb_progress_pills_kit")
@@ -28,10 +26,6 @@ module Playbook
28
26
  step <= active ? "_active" : "_inactive"
29
27
  end
30
28
 
31
- def make_full_width
32
- full_width_pill ? " full_width_pill" : nil
33
- end
34
-
35
29
  def aria_attributes
36
30
  return aria if aria.present?
37
31
 
@@ -23,20 +23,6 @@ const ProgressPillsDefault = () => {
23
23
  )
24
24
  }
25
25
 
26
- const ProgressPillsFullWidth = () => {
27
- return (
28
- <ProgressPills
29
- active={2}
30
- aria={{ label: ariaLabel }}
31
- data={{ testid: testId }}
32
- fullWidthPill
33
- steps={3}
34
- title={title}
35
- value={value}
36
- />
37
- )
38
- }
39
-
40
26
  test('should pass data prop', () => {
41
27
  render(<ProgressPillsDefault />)
42
28
  const kit = screen.getByTestId(testId)
@@ -65,15 +51,4 @@ test('should render value', () => {
65
51
  render(<ProgressPillsDefault />)
66
52
  const kit = screen.getByText(value)
67
53
  expect(kit).toBeInTheDocument()
68
- })
69
-
70
- test('should apply fullWidthPill styling when fullWidthPill prop is true', () => {
71
- render(<ProgressPillsFullWidth />)
72
- const container = screen.getByTestId(testId)
73
- const pillElements = container.querySelectorAll('.full_width_pill')
74
-
75
- expect(pillElements.length).toBeGreaterThan(0)
76
- pillElements.forEach((pill) => {
77
- expect(pill).toHaveClass('full_width_pill')
78
- })
79
- })
54
+ })
@@ -1,7 +1,11 @@
1
1
  <%= content_tag(:div,
2
2
  class: object.wrapper_classname,
3
3
  style: object.style) do %>
4
- <%= pb_content_tag do %>
4
+ <%= content_tag(:div,
5
+ id: object.id,
6
+ data: object.data_values,
7
+ class: object.classname,
8
+ **combined_html_options) do %>
5
9
  <%= content_tag(:div, "",
6
10
  class: "progress_simple_value",
7
11
  style: object.value_style) %>