playbook_ui 14.14.0.pre.alpha.revert4339revert4242play1633displaytitle6456 → 14.14.0.pre.rc.0

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 (175) 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_currency/_currency.tsx +31 -46
  34. data/app/pb_kits/playbook/pb_currency/currency.html.erb +8 -15
  35. data/app/pb_kits/playbook/pb_currency/currency.rb +2 -17
  36. data/app/pb_kits/playbook/pb_currency/docs/example.yml +0 -2
  37. data/app/pb_kits/playbook/pb_currency/docs/index.js +1 -2
  38. data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +1 -3
  39. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table.html.erb +2 -2
  40. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table.md +1 -4
  41. data/app/pb_kits/playbook/pb_draggable/docs/example.yml +0 -2
  42. data/app/pb_kits/playbook/pb_draggable/docs/index.js +1 -2
  43. data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableContainer.tsx +4 -7
  44. data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableItem.tsx +3 -6
  45. data/app/pb_kits/playbook/pb_drawer/_drawer.scss +8 -32
  46. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_default.html.erb +1 -20
  47. data/app/pb_kits/playbook/pb_drawer/docs/example.yml +0 -5
  48. data/app/pb_kits/playbook/pb_drawer/drawer.html.erb +12 -20
  49. data/app/pb_kits/playbook/pb_drawer/drawer.rb +1 -49
  50. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +0 -1
  51. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -2
  52. data/app/pb_kits/playbook/pb_icon_button/docs/_icon_button_default.html.erb +2 -1
  53. data/app/pb_kits/playbook/pb_icon_button/docs/example.yml +3 -5
  54. data/app/pb_kits/playbook/pb_icon_button/icon_button.html.erb +1 -1
  55. data/app/pb_kits/playbook/pb_icon_button/icon_button.rb +0 -3
  56. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.html.erb +6 -1
  57. data/app/pb_kits/playbook/pb_nav/item.html.erb +19 -7
  58. data/app/pb_kits/playbook/pb_nav/nav.html.erb +8 -3
  59. data/app/pb_kits/playbook/pb_online_status/online_status.html.erb +6 -1
  60. data/app/pb_kits/playbook/pb_overlay/_overlay.tsx +0 -4
  61. data/app/pb_kits/playbook/pb_overlay/docs/example.yml +0 -2
  62. data/app/pb_kits/playbook/pb_overlay/docs/index.js +0 -1
  63. data/app/pb_kits/playbook/pb_overlay/overlay.html.erb +3 -5
  64. data/app/pb_kits/playbook/pb_overlay/overlay.rb +0 -9
  65. data/app/pb_kits/playbook/pb_overlay/subcomponents/_overlay_token.tsx +10 -48
  66. data/app/pb_kits/playbook/pb_popover/popover.html.erb +6 -1
  67. data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.scss +1 -6
  68. data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.tsx +5 -7
  69. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.html.erb +0 -1
  70. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.jsx +0 -7
  71. data/app/pb_kits/playbook/pb_progress_pills/docs/example.yml +0 -2
  72. data/app/pb_kits/playbook/pb_progress_pills/docs/index.js +0 -1
  73. data/app/pb_kits/playbook/pb_progress_pills/progress_pills.html.erb +7 -2
  74. data/app/pb_kits/playbook/pb_progress_pills/progress_pills.rb +0 -6
  75. data/app/pb_kits/playbook/pb_progress_pills/progress_pills.test.js +1 -26
  76. data/app/pb_kits/playbook/pb_progress_simple/progress_simple.html.erb +5 -1
  77. data/app/pb_kits/playbook/pb_progress_step/progress_step.html.erb +5 -1
  78. data/app/pb_kits/playbook/pb_progress_step/progress_step_item.html.erb +7 -3
  79. data/app/pb_kits/playbook/pb_radio/radio.html.erb +11 -6
  80. data/app/pb_kits/playbook/pb_select/select.rb +0 -8
  81. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible.jsx +1 -1
  82. data/app/pb_kits/playbook/pb_table/docs/example.yml +0 -5
  83. data/app/pb_kits/playbook/pb_table/docs/index.js +1 -3
  84. data/app/pb_kits/playbook/pb_table/index.ts +9 -41
  85. data/app/pb_kits/playbook/pb_table/styles/_collapsible.scss +0 -4
  86. data/app/pb_kits/playbook/pb_table/subcomponents/_table_body.tsx +2 -29
  87. data/app/pb_kits/playbook/pb_table/subcomponents/_table_row.tsx +3 -31
  88. data/app/pb_kits/playbook/pb_table/table_body.html.erb +7 -13
  89. data/app/pb_kits/playbook/pb_table/table_body.rb +0 -2
  90. data/app/pb_kits/playbook/pb_table/table_row.html.erb +7 -14
  91. data/app/pb_kits/playbook/pb_table/table_row.rb +1 -14
  92. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_mask.html.erb +0 -14
  93. data/app/pb_kits/playbook/pb_text_input/index.js +0 -9
  94. data/app/pb_kits/playbook/pb_text_input/text_input.rb +2 -5
  95. data/app/pb_kits/playbook/pb_title/_title.scss +0 -32
  96. data/app/pb_kits/playbook/pb_title/_title.tsx +1 -10
  97. data/app/pb_kits/playbook/pb_title/docs/_title_default.html.erb +2 -1
  98. data/app/pb_kits/playbook/pb_title/docs/_title_default.jsx +1 -1
  99. data/app/pb_kits/playbook/pb_title/docs/example.yml +0 -2
  100. data/app/pb_kits/playbook/pb_title/docs/index.js +0 -1
  101. data/app/pb_kits/playbook/pb_title/title.rb +1 -10
  102. data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +3 -0
  103. data/app/pb_kits/playbook/pb_tooltip/docs/example.yml +0 -2
  104. data/app/pb_kits/playbook/pb_tooltip/index.js +2 -2
  105. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +2 -10
  106. data/dist/chunks/{_typeahead-_d2af7Id.js → _typeahead-btjo1UN5.js} +4 -4
  107. data/dist/chunks/_weekday_stacked-TIh9nTmZ.js +45 -0
  108. data/dist/chunks/{lib-Fr78pbpF.js → lib-DjpLC8uO.js} +2 -2
  109. data/dist/chunks/{pb_form_validation-CN51bfsD.js → pb_form_validation-S56UaHZl.js} +1 -1
  110. data/dist/chunks/vendor.js +1 -1
  111. data/dist/menu.yml +10 -3
  112. data/dist/playbook-doc.js +1 -1
  113. data/dist/playbook-rails-react-bindings.js +1 -1
  114. data/dist/playbook-rails.js +1 -1
  115. data/dist/playbook.css +1 -1
  116. data/lib/playbook/forms/builder.rb +0 -1
  117. data/lib/playbook/version.rb +2 -2
  118. metadata +23 -62
  119. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_custom_cell.jsx +0 -75
  120. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header.html.erb +0 -33
  121. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header_rails.md +0 -3
  122. data/app/pb_kits/playbook/pb_bar_graph/BarGraphStyles.scss +0 -58
  123. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.jsx +0 -64
  124. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.md +0 -1
  125. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_react_hook.jsx +0 -69
  126. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_react_hook.md +0 -1
  127. data/app/pb_kits/playbook/pb_currency/docs/_currency_null_display.html.erb +0 -22
  128. data/app/pb_kits/playbook/pb_currency/docs/_currency_null_display.jsx +0 -34
  129. data/app/pb_kits/playbook/pb_currency/docs/_currency_null_display_rails.md +0 -1
  130. data/app/pb_kits/playbook/pb_currency/docs/_currency_null_display_react.md +0 -1
  131. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table_react.jsx +0 -90
  132. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table_react.md +0 -5
  133. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_behavior.html.erb +0 -8
  134. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_borders.html.erb +0 -33
  135. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.html.erb +0 -0
  136. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.html.erb +0 -24
  137. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.html.erb +0 -21
  138. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.md +0 -1
  139. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_sizes.html.erb +0 -49
  140. data/app/pb_kits/playbook/pb_drawer/index.js +0 -257
  141. data/app/pb_kits/playbook/pb_icon_button/_icon_button.tsx +0 -71
  142. data/app/pb_kits/playbook/pb_icon_button/docs/_icon_button_default.jsx +0 -17
  143. data/app/pb_kits/playbook/pb_icon_button/docs/_icon_button_sizes.html.erb +0 -27
  144. data/app/pb_kits/playbook/pb_icon_button/docs/_icon_button_sizes.jsx +0 -61
  145. data/app/pb_kits/playbook/pb_icon_button/docs/index.js +0 -2
  146. data/app/pb_kits/playbook/pb_icon_button/icon_button.test.jsx +0 -39
  147. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional.html.erb +0 -11
  148. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional.jsx +0 -37
  149. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional.md +0 -1
  150. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional_react.md +0 -1
  151. data/app/pb_kits/playbook/pb_overlay/index.js +0 -61
  152. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.md +0 -1
  153. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_full_width.html.erb +0 -1
  154. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_full_width.jsx +0 -18
  155. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_full_width_rails.md +0 -1
  156. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_full_width_react.md +0 -1
  157. data/app/pb_kits/playbook/pb_select/index.js +0 -38
  158. data/app/pb_kits/playbook/pb_table/docs/_table_with_clickable_rows.html.erb +0 -47
  159. data/app/pb_kits/playbook/pb_table/docs/_table_with_clickable_rows.jsx +0 -88
  160. data/app/pb_kits/playbook/pb_table/docs/_table_with_clickable_rows.md +0 -1
  161. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.html.erb +0 -51
  162. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click_rails.md +0 -2
  163. data/app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.html.erb +0 -96
  164. data/app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.jsx +0 -101
  165. data/app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.md +0 -1
  166. data/app/pb_kits/playbook/pb_title/docs/_title_display_size.html.erb +0 -7
  167. data/app/pb_kits/playbook/pb_title/docs/_title_display_size.jsx +0 -54
  168. data/app/pb_kits/playbook/pb_title/docs/_title_display_size.md +0 -1
  169. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_delay_rails.html.erb +0 -39
  170. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_delay_rails.md +0 -3
  171. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_interaction.html.erb +0 -26
  172. data/app/pb_kits/playbook/pb_tooltip/floating_ui.js +0 -282
  173. data/dist/chunks/_weekday_stacked-BZe1DgW-.js +0 -45
  174. data/lib/playbook/forms/builder/time_zone_select_field.rb +0 -19
  175. /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
@@ -1,39 +0,0 @@
1
- import { ensureAccessible, renderKit } from '../utilities/test-utils'
2
-
3
- import { IconButton } from 'playbook-ui'
4
-
5
- const props = {
6
- data: { testid: 'default', icon: 'plus' }
7
- }
8
-
9
- test('default test', () => {
10
- const kit = renderKit(IconButton, props)
11
-
12
- expect(kit).toBeInTheDocument()
13
- expect(kit).toHaveClass('pb_icon_button_kit_default')
14
-
15
- const iconElement = kit.querySelector('.icon_button_icon')
16
- expect(iconElement).toBeInTheDocument()
17
- })
18
-
19
- it("should be accessible", async () => {
20
- ensureAccessible(IconButton, props)
21
- })
22
-
23
- test('passes link variant prop', () => {
24
- const kit = renderKit(IconButton, { ...props, variant: "link" })
25
- expect(kit).toBeInTheDocument()
26
- expect(kit).toHaveClass('pb_icon_button_kit_link')
27
- })
28
-
29
- test('should set button type to "submit" when htmlType prop is passed', () => {
30
- const kit = renderKit(IconButton, { ...props, htmlType: 'submit' })
31
- const buttonElement = kit.querySelector('button')
32
- expect(buttonElement).toHaveAttribute('type', 'submit')
33
- })
34
-
35
- test('passes custom classname', () => {
36
- const kit = renderKit(IconButton, { ...props, className: "extra_class" })
37
- expect(kit).toBeInTheDocument()
38
- expect(kit).toHaveClass('pb_icon_button_kit_default extra_class')
39
- })
@@ -1,11 +0,0 @@
1
- <%= pb_rails("overlay", props: { layout: { "x": "xl" }, color: "card_light", dynamic: true }) do %>
2
- <%= pb_rails("flex", props: { column_gap: "lg", orientation: "row", overflow_x: "auto" }) do %>
3
- <% 15.times do %>
4
- <%= pb_rails("flex/flex_item") do %>
5
- <%= pb_rails("card") do %>
6
- Card content
7
- <% end %>
8
- <% end %>
9
- <% end %>
10
- <% end %>
11
- <% end %>
@@ -1,37 +0,0 @@
1
- import React, { forwardRef } from 'react'
2
- import {
3
- Overlay,
4
- Card,
5
- Flex,
6
- FlexItem,
7
- } from 'playbook-ui'
8
-
9
- const InlineCardsExample = forwardRef(function InlineCardsExample(ref) {
10
- return (
11
- <Flex
12
- columnGap="lg"
13
- orientation="row"
14
- ref={ref}
15
- >
16
- {Array.from({ length: 15 }, (_, index) => (
17
- <FlexItem key={index}>
18
- <Card>{"Card Content"}</Card>
19
- </FlexItem>
20
- ))}
21
- </Flex>
22
- )
23
- })
24
-
25
- const OverlayVerticalDynamicMultiDirectional = () => (
26
- <>
27
- <Overlay
28
- color="card_light"
29
- dynamic
30
- layout={{"x": "xl"}}
31
- >
32
- <InlineCardsExample />
33
- </Overlay>
34
- </>
35
- )
36
-
37
- export default OverlayVerticalDynamicMultiDirectional
@@ -1 +0,0 @@
1
- Pass the `dynamic` prop to make the overlay render while the scrollbar isn't at either end on the scrollbar.
@@ -1 +0,0 @@
1
- Pass the `dynamic` prop to make the overlay render while the scrollbar isn't at either end on the scrollbar. You must also add a `ref` to the child that's being passed through the Overlay.
@@ -1,61 +0,0 @@
1
- import PbEnhancedElement from '../pb_enhanced_element'
2
-
3
- const OVERLAY_SELECTOR = '[data-pb-overlay]'
4
- const OVERLAY_SCROLL_ELEMENT = '[data-overlay-scroll-element]'
5
- const PREVIOUS_OVERLAY_CLASSNAME = '[data-previous-overlay-classname]'
6
- const SUBSEQUENT_OVERLAY_CLASSNAME = '[data-subsequent-overlay-classname]'
7
-
8
- export default class PbOverlay extends PbEnhancedElement {
9
- static get selector() {
10
- return OVERLAY_SELECTOR
11
- }
12
-
13
- get target() {
14
- return this.element.querySelector(OVERLAY_SCROLL_ELEMENT).children[0]
15
- }
16
-
17
- connect() {
18
- this.handleOverlayDynamic()
19
- }
20
-
21
- handleOverlayDynamic() {
22
- const isOverlayDynamic = this.element.dataset?.overlayDynamic
23
-
24
- if (isOverlayDynamic) {
25
- const previousOverlayElement = this.element.querySelector(PREVIOUS_OVERLAY_CLASSNAME)
26
- const previousOverlayClassname = previousOverlayElement?.dataset?.previousOverlayClassname
27
- const subsequentOverlayElement = this.element.querySelector(SUBSEQUENT_OVERLAY_CLASSNAME)
28
- const subsequentOverlayClassname = subsequentOverlayElement?.dataset?.subsequentOverlayClassname
29
-
30
- const handleScrollChange = (target) => {
31
- const { scrollLeft, scrollWidth, clientWidth } = target
32
- const isScrollAtStart = scrollLeft === 0
33
- const isScrollAtEnd = scrollLeft + clientWidth >= scrollWidth - 1
34
-
35
- if (isScrollAtStart) {
36
- previousOverlayElement.classList.remove(previousOverlayClassname)
37
- } else {
38
- previousOverlayElement.classList.add(previousOverlayClassname)
39
- }
40
-
41
- if (isScrollAtEnd) {
42
- subsequentOverlayElement.classList.remove(subsequentOverlayClassname)
43
- } else {
44
- subsequentOverlayElement.classList.add(subsequentOverlayClassname)
45
- }
46
- }
47
-
48
- this.target.addEventListener('scroll', (event) => {
49
- handleScrollChange(event.target)
50
- })
51
-
52
- handleScrollChange(this.target)
53
- }
54
- }
55
-
56
- disconnect() {
57
- if (this.element.dataset?.overlayDynamic) {
58
- this.target.removeEventListener('scroll')
59
- }
60
- }
61
- }
@@ -1 +0,0 @@
1
- Progress pills start at `45px` wide if the container allows, but will shrink down to `1px` as the container gets smaller. Resize this window to see each pill shrink.
@@ -1 +0,0 @@
1
- <%= pb_rails("progress_pills", props: { aria: { label: "2 out of 5 steps complete" }, steps: 5, active: 2, full_width_pill: true }) %>
@@ -1,18 +0,0 @@
1
- import React from 'react'
2
- import ProgressPills from '../_progress_pills'
3
-
4
- const ProgressPillsFullWidth = (props) => {
5
- return (
6
- <>
7
- <ProgressPills
8
- active={2}
9
- aria={{ label: '2 out of 5 steps complete' }}
10
- fullWidthPill
11
- steps={5}
12
- {...props}
13
- />
14
- </>
15
- )
16
- }
17
-
18
- export default ProgressPillsFullWidth
@@ -1 +0,0 @@
1
- Pass `full_width_pill: true` to the Progress Pill kit to get true 100% full width pills. The kit will take up the full width of the container that it is in.
@@ -1 +0,0 @@
1
- Pass `fullWidthPill` to the Progress Pill kit to get true 100% full width pills. The kit will take up the full width of the container that it is in.
@@ -1,38 +0,0 @@
1
- import PbEnhancedElement from "../pb_enhanced_element";
2
-
3
- const SELECT_WRAPPER_SELECTOR = "[data-pb-select]";
4
- const SELECT_VALIDATION_MESSAGE_CLASS = ".pb_body_kit_negative";
5
-
6
- export default class PbSelect extends PbEnhancedElement {
7
- static get selector() {
8
- return SELECT_WRAPPER_SELECTOR;
9
- }
10
-
11
- connect() {
12
- this.setValidationMessage();
13
- }
14
-
15
- setValidationMessage() {
16
- const validationMessage = this.element.dataset?.validationMessage;
17
-
18
- if (validationMessage) {
19
- const selectElement = this.element.querySelector("select");
20
- const setErrorTextContent = (text, timeout) => {
21
- setTimeout(() => {
22
- const errorMessageElement = this.element.querySelector(SELECT_VALIDATION_MESSAGE_CLASS);
23
- if (errorMessageElement) {
24
- errorMessageElement.textContent = text;
25
- } else {
26
- setErrorTextContent(text, 100);
27
- }
28
- }, timeout);
29
- };
30
-
31
- selectElement.addEventListener("change", (e) => {
32
- if (!e.target.checkValidity()) {
33
- setErrorTextContent(validationMessage, 300);
34
- }
35
- });
36
- }
37
- }
38
- }
@@ -1,47 +0,0 @@
1
- <%= pb_rails("table", props: { size: "sm" }) do %>
2
- <%= pb_rails("table/table_head") do %>
3
- <%= pb_rails("table/table_row") do %>
4
- <%= pb_rails("table/table_header", props: { text: "Column 1" }) %>
5
- <%= pb_rails("table/table_header", props: { text: "Column 2" }) %>
6
- <%= pb_rails("table/table_header", props: { text: "Column 3" }) %>
7
- <%= pb_rails("table/table_header", props: { text: "Column 4" }) %>
8
- <%= pb_rails("table/table_header", props: { text: "Column 5" }) %>
9
- <%= pb_rails("table/table_header", props: { text: "" }) %>
10
- <% end %>
11
- <% end %>
12
- <%= pb_rails("table/table_body") do %>
13
- <%= pb_rails("table/table_row", props: { cursor: "pointer", html_options: { onclick: "alert('Row 1 clicked')" } }) do %>
14
- <%= pb_rails("table/table_cell", props: { text: "Value 1" }) %>
15
- <%= pb_rails("table/table_cell", props: { text: "Value 2" }) %>
16
- <%= pb_rails("table/table_cell", props: { text: "Value 3" }) %>
17
- <%= pb_rails("table/table_cell", props: { text: "Value 4" }) %>
18
- <%= pb_rails("table/table_cell", props: { text: "Value 5" }) %>
19
- <%= pb_rails("table/table_cell", props: { text_align: "right" }) do %>
20
- <%= pb_rails("icon", props: { color: "primary_action", fixed_width: true, icon: "chevron-right", size: "xs" }) %>
21
- <% end %>
22
- <% end %>
23
-
24
- <%= pb_rails("table/table_row", props: { cursor: "pointer", html_options: { onclick: "alert('Row 2 clicked')" } }) do %>
25
- <%= pb_rails("table/table_cell", props: { text: "Value 1" }) %>
26
- <%= pb_rails("table/table_cell", props: { text: "Value 2" }) %>
27
- <%= pb_rails("table/table_cell", props: { text: "Value 3" }) %>
28
- <%= pb_rails("table/table_cell", props: { text: "Value 4" }) %>
29
- <%= pb_rails("table/table_cell", props: { text: "Value 5" }) %>
30
- <%= pb_rails("table/table_cell", props: { text_align: "right" }) do %>
31
- <%= pb_rails("icon", props: { color: "primary_action", fixed_width: true, icon: "chevron-right", size: "xs" }) %>
32
- <% end %>
33
- <% end %>
34
-
35
- <%= pb_rails("table/table_row", props: { cursor: "pointer", html_options: { onclick: "alert('Row 3 clicked')" } }) do %>
36
- <%= pb_rails("table/table_cell", props: { text: "Value 1" }) %>
37
- <%= pb_rails("table/table_cell", props: { text: "Value 2" }) %>
38
- <%= pb_rails("table/table_cell", props: { text: "Value 3" }) %>
39
- <%= pb_rails("table/table_cell", props: { text: "Value 4" }) %>
40
- <%= pb_rails("table/table_cell", props: { text: "Value 5" }) %>
41
- <%= pb_rails("table/table_cell", props: { text_align: "right" }) do %>
42
- <%= pb_rails("icon", props: { color: "primary_action", fixed_width: true, icon: "chevron-right", size: "xs" }) %>
43
- <% end %>
44
- <% end %>
45
- <% end %>
46
- <% end %>
47
-
@@ -1,88 +0,0 @@
1
- import React from 'react'
2
- import { Table, Icon } from 'playbook-ui'
3
-
4
- const TableWithClickableRows = (props) => {
5
-
6
-
7
- return (
8
- <Table
9
- size="sm"
10
- {...props}
11
- >
12
- <Table.Head>
13
- <Table.Row>
14
- <Table.Header>{"Column 1"}</Table.Header>
15
- <Table.Header>{"Column 2"}</Table.Header>
16
- <Table.Header>{"Column 3"}</Table.Header>
17
- <Table.Header>{"Column 4"}</Table.Header>
18
- <Table.Header>{"Column 5"}</Table.Header>
19
- <Table.Header>{""}</Table.Header>
20
- </Table.Row>
21
- </Table.Head>
22
- <Table.Body>
23
- <Table.Row
24
- cursor="pointer"
25
- htmlOptions={{ onClick: () => alert("Row 1 clicked") }}
26
- {...props}
27
- >
28
- <Table.Cell>{"Value 1"}</Table.Cell>
29
- <Table.Cell>{"Value 2"}</Table.Cell>
30
- <Table.Cell>{"Value 3"}</Table.Cell>
31
- <Table.Cell>{"Value 4"}</Table.Cell>
32
- <Table.Cell>{"Value 5"}</Table.Cell>
33
- <Table.Cell textAlign="right">
34
- <Icon
35
- color="primary_action"
36
- fixedWidth
37
- icon="chevron-right"
38
- size="xs"
39
- {...props}
40
- />
41
- </Table.Cell>
42
- </Table.Row>
43
- <Table.Row
44
- cursor="pointer"
45
- htmlOptions={{ onClick: () => alert("Row 2 clicked") }}
46
- {...props}
47
- >
48
- <Table.Cell>{"Value 1"}</Table.Cell>
49
- <Table.Cell>{"Value 2"}</Table.Cell>
50
- <Table.Cell>{"Value 3"}</Table.Cell>
51
- <Table.Cell>{"Value 4"}</Table.Cell>
52
- <Table.Cell>{"Value 5"}</Table.Cell>
53
- <Table.Cell textAlign="right">
54
- <Icon
55
- color="primary_action"
56
- fixedWidth
57
- icon="chevron-right"
58
- size="xs"
59
- {...props}
60
- />
61
- </Table.Cell>
62
- </Table.Row>
63
- <Table.Row
64
- cursor="pointer"
65
- htmlOptions={{ onClick: () => alert("Row 3 clicked") }}
66
- {...props}
67
- >
68
- <Table.Cell>{"Value 1"}</Table.Cell>
69
- <Table.Cell>{"Value 2"}</Table.Cell>
70
- <Table.Cell>{"Value 3"}</Table.Cell>
71
- <Table.Cell>{"Value 4"}</Table.Cell>
72
- <Table.Cell>{"Value 5"}</Table.Cell>
73
- <Table.Cell textAlign="right">
74
- <Icon
75
- color="primary_action"
76
- fixedWidth
77
- icon="chevron-right"
78
- size="xs"
79
- {...props}
80
- />
81
- </Table.Cell>
82
- </Table.Row>
83
- </Table.Body>
84
- </Table>
85
- )
86
- }
87
-
88
- export default TableWithClickableRows
@@ -1 +0,0 @@
1
- Clickable table rows do not require any additional props. This doc example showcases how to set them up using `html_options`/`htmlOptions` and click events. Using the global prop for cursor to set it to "pointer" is also recommended for better UX.
@@ -1,51 +0,0 @@
1
- <% content = capture do %>
2
- <%= pb_rails("card", props: { border_none: true, border_radius: "none", padding: "md" }) do %>
3
- <%= pb_rails("body", props: { text: "Nested content inside a Table Row" }) %>
4
- <% end %>
5
- <% end %>
6
-
7
- <%= pb_rails("table", props: { size: "sm" }) do %>
8
- <%= pb_rails("table/table_head") do %>
9
- <%= pb_rails("table/table_row") do %>
10
- <%= pb_rails("table/table_header", props: { text: "Column 1"}) %>
11
- <%= pb_rails("table/table_header", props: { text: "Column 2"}) %>
12
- <%= pb_rails("table/table_header", props: { text: "Column 3"}) %>
13
- <%= pb_rails("table/table_header", props: { text: "Column 4"}) %>
14
- <%= pb_rails("table/table_header", props: { text: "Column 5"}) %>
15
- <%= pb_rails("table/table_header", props: { text: ""}) %>
16
- <% end %>
17
- <% end %>
18
- <%= pb_rails("table/table_body") do %>
19
- <%= pb_rails("table/table_row", props: { collapsible: true, collapsible_content: content, collapsible_side_highlight: true, toggle_cell_id: "cell-1", id: "5" }) do %>
20
- <%= pb_rails("table/table_cell", props: { text: "Value 1"}) %>
21
- <%= pb_rails("table/table_cell", props: { text: "Value 2"}) %>
22
- <%= pb_rails("table/table_cell", props: { text: "Value 3"}) %>
23
- <%= pb_rails("table/table_cell", props: { text: "Value 4"}) %>
24
- <%= pb_rails("table/table_cell", props: { text: "Value 5"}) %>
25
- <%= pb_rails("table/table_cell", props: { text_align: "right", id: "cell-1", cursor: "pointer" }) do %>
26
- <%= pb_rails("icon", props: { icon: "chevron-down", fixed_width: true, color: "primary" }) %>
27
- <% end %>
28
- <% end %>
29
- <%= pb_rails("table/table_row", props: { collapsible: true, collapsible_content: content, collapsible_side_highlight: true, toggle_cell_id: "cell-2", id: "6" }) do %>
30
- <%= pb_rails("table/table_cell", props: { text: "Value 1"}) %>
31
- <%= pb_rails("table/table_cell", props: { text: "Value 2"}) %>
32
- <%= pb_rails("table/table_cell", props: { text: "Value 3"}) %>
33
- <%= pb_rails("table/table_cell", props: { text: "Value 4"}) %>
34
- <%= pb_rails("table/table_cell", props: { text: "Value 5"}) %>
35
- <%= pb_rails("table/table_cell", props: { text_align: "right", id: "cell-2", cursor: "pointer" }) do %>
36
- <%= pb_rails("icon", props: { icon: "chevron-down", fixed_width: true, color: "primary" }) %>
37
- <% end %>
38
- <% end %>
39
- <%= pb_rails("table/table_row", props: { collapsible: true, collapsible_content: content, collapsible_side_highlight: true, toggle_cell_id: "cell-3", id: "7" }) do %>
40
- <%= pb_rails("table/table_cell", props: { text: "Value 1"}) %>
41
- <%= pb_rails("table/table_cell", props: { text: "Value 2"}) %>
42
- <%= pb_rails("table/table_cell", props: { text: "Value 3"}) %>
43
- <%= pb_rails("table/table_cell", props: { text: "Value 4"}) %>
44
- <%= pb_rails("table/table_cell", props: { text: "Value 5"}) %>
45
- <%= pb_rails("table/table_cell", props: { text_align: "right", id: "cell-3", cursor: "pointer" }) do %>
46
- <%= pb_rails("icon", props: { icon: "chevron-down", fixed_width: true, color: "primary" }) %>
47
- <% end %>
48
- <% end %>
49
- <% end %>
50
- <% end %>
51
-
@@ -1,2 +0,0 @@
1
- When using the `collapsible` prop, the default functionality is that the entire Row will be clickable to toggle the Row. To limit the click event to a specific Table Cell, you can use the `toggle_cell_id` prop to pass in the id of the Cell you want to use as the trigger.
2
- __NOTE__: `toggle_cell_id` and the `id` on the Cell you want to use as the trigger MUST be the same. Please also be aware that you will need to pass in an `id` to any Table Rows you want to be collapsible. Make sure every `id` is unique if you are using multipe collapsibles.
@@ -1,96 +0,0 @@
1
- <% checkboxes = [
2
- { name: 'Coffee', id: 'coffee', checked: false },
3
- { name: 'Ice Cream', id: 'ice-cream', checked: false },
4
- { name: 'Chocolate', id: 'chocolate', checked: true }
5
- ] %>
6
-
7
- <%= pb_rails("flex", props: { justify: "end", margin_bottom: "sm" }) do %>
8
- <%= pb_rails("flex", props: { justify: "end", margin_bottom: "sm" }) do %>
9
- <%= pb_rails("button", props: { text: "Delete", id: "delete-button" }) %>
10
- <% end %>
11
- <% end %>
12
-
13
- <%= pb_rails("table", props: { size: "sm" }) do %>
14
- <%= pb_rails("table/table_head") do %>
15
- <%= pb_rails("table/table_row") do %>
16
- <%= pb_rails("table/table_header") do %>
17
- <%= pb_rails("checkbox", props: {
18
- checked: true,
19
- value: "checkbox-value",
20
- name: "main-checkbox-selectable",
21
- indeterminate: true,
22
- id: "checkbox-selectable"
23
- }) %>
24
- <% end %>
25
- <%= pb_rails("table/table_header", props: { text: "Column 1" }) %>
26
- <%= pb_rails("table/table_header", props: { text: "Column 2" }) %>
27
- <%= pb_rails("table/table_header", props: { text: "Column 3" }) %>
28
- <%= pb_rails("table/table_header", props: { text: "Column 4" }) %>
29
- <%= pb_rails("table/table_header", props: { text: "Column 5" }) %>
30
- <% end %>
31
- <% end %>
32
- <%= pb_rails("table/table_body") do %>
33
- <% checkboxes.each_with_index do |checkbox, index| %>
34
- <%= pb_rails("table/table_row") do %>
35
- <%= pb_rails("table/table_cell") do %>
36
- <%= pb_rails("checkbox", props: { checked: checkbox[:checked], id: "#{checkbox[:id]}-selectable-checkbox", name: "#{checkbox[:id]}-selectable-checkbox", on_change: "updateCheckboxes(#{index})", value: "check-box value" }) %>
37
- <% end %>
38
- <%= pb_rails("table/table_cell") do %>
39
- <%= pb_rails("image", props: { alt: "picture of a misty forest", size: "xs", url: "https://unsplash.it/500/400/?image=634" }) %>
40
- <% end %>
41
- <%= pb_rails("table/table_cell", props: { text: "Value 2" }) %>
42
- <%= pb_rails("table/table_cell", props: { text: "Value 3" }) %>
43
- <%= pb_rails("table/table_cell", props: { text: "Value 4" }) %>
44
- <%= pb_rails("table/table_cell", props: { text: "Value 5" }) %>
45
- <% end %>
46
- <% end %>
47
- <% end %>
48
- <% end %>
49
-
50
- <script>
51
- document.addEventListener('DOMContentLoaded', function() {
52
- const mainCheckboxWrapper = document.getElementById('checkbox-selectable');
53
- const mainCheckbox = document.getElementsByName("main-checkbox-selectable")[0];
54
- const childCheckboxes = document.querySelectorAll('input[type="checkbox"][id$="selectable-checkbox"]');
55
- const deleteButton = document.getElementById('delete-button');
56
-
57
- const updateDeleteButton = () => {
58
- const anyChecked = Array.from(childCheckboxes).some(checkbox => checkbox.checked);
59
- deleteButton.style.display = anyChecked ? 'block' : 'none';
60
- };
61
-
62
- const updateMainCheckbox = () => {
63
- // Count the number of checked child checkboxes
64
- const checkedCount = Array.from(childCheckboxes).filter(cb => cb.checked).length;
65
- // Determine if the main checkbox should be in an indeterminate state
66
- const indeterminate = checkedCount > 0 && checkedCount < childCheckboxes.length;
67
-
68
- // Set the main checkbox states
69
- mainCheckbox.indeterminate = indeterminate;
70
- mainCheckbox.checked = checkedCount > 0;
71
-
72
- // Determine the icon class to add and remove based on the number of checked checkboxes
73
- const iconClassToAdd = checkedCount === 0 ? 'pb_checkbox_checkmark' : 'pb_checkbox_indeterminate';
74
- const iconClassToRemove = checkedCount === 0 ? 'pb_checkbox_indeterminate' : 'pb_checkbox_checkmark';
75
-
76
- // Add and remove the icon class to the main checkbox wrapper
77
- mainCheckboxWrapper.querySelector('[data-pb-checkbox-icon-span]').classList.add(iconClassToAdd);
78
- mainCheckboxWrapper.querySelector('[data-pb-checkbox-icon-span]').classList.remove(iconClassToRemove);
79
-
80
- // Toggle the visibility of the checkbox icon based on the indeterminate state
81
- mainCheckboxWrapper.getElementsByClassName("indeterminate_icon")[0].classList.toggle('hidden', !indeterminate);
82
- mainCheckboxWrapper.getElementsByClassName("check_icon")[0].classList.toggle('hidden', indeterminate);
83
-
84
- updateDeleteButton();
85
- };
86
-
87
- mainCheckbox.addEventListener('change', function() {
88
- childCheckboxes.forEach(cb => cb.checked = this.checked);
89
- updateMainCheckbox();
90
- });
91
-
92
- childCheckboxes.forEach(cb => {
93
- cb.addEventListener('change', updateMainCheckbox);
94
- });
95
- });
96
- </script>
@@ -1,101 +0,0 @@
1
- import React, { useState } from 'react'
2
- import { Table, Checkbox, Image, Flex, Button } from 'playbook-ui'
3
-
4
- const TableWithSelectableRows = (props) => {
5
- const [checkboxes, setCheckboxes] = useState([
6
- { name: "Coffee", checked: false },
7
- { name: "Ice Cream", checked: false },
8
- { name: "Chocolate", checked: true },
9
- ]);
10
-
11
- const isAllChecked = !checkboxes.find((checkbox) => !checkbox.checked);
12
- const isNoneChecked = !checkboxes.find((checkbox) => checkbox.checked);
13
-
14
- const processCheckboxes = (checked) =>
15
- checkboxes.slice(0).map((checkbox) => {
16
- checkbox.checked = checked;
17
- return checkbox;
18
- });
19
-
20
- const onToggleAll = () => {
21
- setCheckboxes(
22
- isNoneChecked ? processCheckboxes(true) : processCheckboxes(false)
23
- );
24
- };
25
-
26
- const updateCheckboxes = (checkbox, index) => {
27
- const newCheckboxes = checkboxes.slice(0);
28
- newCheckboxes[index].checked = !checkbox.checked;
29
- setCheckboxes(newCheckboxes);
30
- };
31
-
32
- return (
33
- <>
34
- <Flex
35
- justify="end"
36
- marginBottom="sm"
37
- >
38
- {!isNoneChecked && (
39
- <Flex
40
- justify="end"
41
- marginBottom="sm"
42
- >
43
- <Button>Delete</Button>
44
- </Flex>
45
- )}
46
- </Flex>
47
- <Table
48
- size="sm"
49
- {...props}
50
- >
51
- <Table.Head>
52
- <Table.Row>
53
- <Table.Header>
54
- <Checkbox
55
- checked={isAllChecked}
56
- indeterminate={!isAllChecked && !isNoneChecked}
57
- name="checkbox-name"
58
- onChange={onToggleAll}
59
- value="check-box value"
60
- />
61
- </Table.Header>
62
- <Table.Header>{"Column 1"}</Table.Header>
63
- <Table.Header>{"Column 2"}</Table.Header>
64
- <Table.Header>{"Column 3"}</Table.Header>
65
- <Table.Header>{"Column 4"}</Table.Header>
66
- <Table.Header>{"Column 5"}</Table.Header>
67
- </Table.Row>
68
- </Table.Head>
69
- <Table.Body>
70
- {checkboxes.map((checkbox, index) => (
71
- <Table.Row key={index}>
72
- <Table.Cell>
73
- <Checkbox
74
- checked={checkbox.checked}
75
- name={checkbox.name}
76
- onChange={() => {
77
- updateCheckboxes(checkbox, index);
78
- }}
79
- value="check-box value"
80
- />
81
- </Table.Cell>
82
- <Table.Cell>
83
- <Image
84
- alt="picture of a misty forest"
85
- size="xs"
86
- url="https://unsplash.it/500/400/?image=634"
87
- />
88
- </Table.Cell>
89
- <Table.Cell>{"Value 2"}</Table.Cell>
90
- <Table.Cell>{"Value 3"}</Table.Cell>
91
- <Table.Cell>{"Value 4"}</Table.Cell>
92
- <Table.Cell>{"Value 5"}</Table.Cell>
93
- </Table.Row>
94
- ))}
95
- </Table.Body>
96
- </Table>
97
- </>
98
- )
99
- }
100
-
101
- export default TableWithSelectableRows
@@ -1 +0,0 @@
1
- Use the Checkbox kit with the Table to achieve the selectable row functionality seen here.
@@ -1,7 +0,0 @@
1
- <%= pb_rails("title", props: { text: "Display Size xs", tag: "h1", display_size: "xs" }) %>
2
- <%= pb_rails("title", props: { text: "Display Size sm", tag: "h1", display_size: "sm" }) %>
3
- <%= pb_rails("title", props: { text: "Display Size md", tag: "h1", display_size: "md" }) %>
4
- <%= pb_rails("title", props: { text: "Display Size lg", tag: "h1", display_size: "lg" }) %>
5
- <%= pb_rails("title", props: { text: "Display Size xl", tag: "h1", display_size: "xl" }) %>
6
- <%= pb_rails("title", props: { text: "Display Size xxl", tag: "h1", display_size: "xxl" }) %>
7
- <%= pb_rails("title", props: { text: "This is a size of display", tag: "h1", size: "display"}) %>