playbook_ui 15.4.0.pre.alpha.PLAY2465improvetruncation12292 → 15.4.0.pre.alpha.PLAY2582rails722112532

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 (165) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling.jsx +2 -1
  3. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_column_headers.jsx +1 -1
  4. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_fullscreen.jsx +3 -1
  5. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_infinite_scroll.jsx +1 -1
  6. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_inline_editing.jsx +3 -1
  7. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_row_styling.jsx +2 -1
  8. data/app/pb_kits/playbook/pb_copy_button/_copy_button.tsx +21 -8
  9. data/app/pb_kits/playbook/pb_copy_button/copy_button.html.erb +6 -2
  10. data/app/pb_kits/playbook/pb_copy_button/copy_button.rb +3 -0
  11. data/app/pb_kits/playbook/pb_copy_button/copy_button.test.jsx +24 -0
  12. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_button_variant.html.erb +9 -0
  13. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_button_variant.jsx +24 -0
  14. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_button_variant_rails.md +1 -0
  15. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_button_variant_react.md +1 -0
  16. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_default.html.erb +2 -2
  17. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_default.jsx +1 -2
  18. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_from.html.erb +2 -2
  19. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_from.jsx +2 -0
  20. data/app/pb_kits/playbook/pb_copy_button/docs/example.yml +2 -0
  21. data/app/pb_kits/playbook/pb_copy_button/docs/index.js +1 -0
  22. data/app/pb_kits/playbook/pb_currency/docs/_currency_abbreviated.md +1 -0
  23. data/app/pb_kits/playbook/pb_currency/docs/_currency_matching_decimals_rails.md +1 -0
  24. data/app/pb_kits/playbook/pb_currency/docs/_currency_matching_decimals_react.md +1 -0
  25. data/app/pb_kits/playbook/pb_currency/docs/_currency_negative.html.erb +10 -0
  26. data/app/pb_kits/playbook/pb_currency/docs/_currency_negative.jsx +10 -0
  27. data/app/pb_kits/playbook/pb_currency/docs/_currency_negative.md +1 -0
  28. data/app/pb_kits/playbook/pb_currency/docs/_currency_no_symbol_rails.md +1 -0
  29. data/app/pb_kits/playbook/pb_currency/docs/_currency_no_symbol_react.md +1 -0
  30. data/app/pb_kits/playbook/pb_currency/docs/_currency_variants.html.erb +7 -0
  31. data/app/pb_kits/playbook/pb_currency/docs/_currency_variants.jsx +7 -0
  32. data/app/pb_kits/playbook/pb_currency/docs/_description.md +2 -2
  33. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +44 -3
  34. data/app/pb_kits/playbook/pb_date_time/_date_time.tsx +3 -0
  35. data/app/pb_kits/playbook/pb_date_time/date_time.html.erb +1 -0
  36. data/app/pb_kits/playbook/pb_date_time/date_time.rb +1 -0
  37. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_show_current_year.html.erb +4 -0
  38. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_show_current_year.jsx +14 -0
  39. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_show_current_year_rails.md +1 -0
  40. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_show_current_year_react.md +1 -0
  41. data/app/pb_kits/playbook/pb_date_time/docs/example.yml +3 -1
  42. data/app/pb_kits/playbook/pb_date_time/docs/index.js +1 -0
  43. data/app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.tsx +3 -0
  44. data/app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.html.erb +2 -2
  45. data/app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.rb +2 -0
  46. data/app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.test.js +33 -0
  47. data/app/pb_kits/playbook/pb_date_time_stacked/docs/_date_time_stacked_show_current_year.html.erb +4 -0
  48. data/app/pb_kits/playbook/pb_date_time_stacked/docs/_date_time_stacked_show_current_year.jsx +22 -0
  49. data/app/pb_kits/playbook/pb_date_time_stacked/docs/_date_time_stacked_show_current_year.md +1 -0
  50. data/app/pb_kits/playbook/pb_date_time_stacked/docs/example.yml +3 -1
  51. data/app/pb_kits/playbook/pb_date_time_stacked/docs/index.js +1 -0
  52. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_compound_components.html.erb +2 -2
  53. data/app/pb_kits/playbook/pb_dropdown/index.js +31 -13
  54. data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_alignment.jsx +2 -1
  55. data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_default.jsx +2 -1
  56. data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_orientation.jsx +2 -1
  57. data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_size.jsx +2 -1
  58. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_wrapped.jsx +4 -1
  59. data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_variant.jsx +1 -1
  60. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_description.md +3 -1
  61. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_colors.jsx +1 -1
  62. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_default.jsx +1 -1
  63. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_default.md +1 -0
  64. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_height.jsx +1 -1
  65. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_horizontal.jsx +1 -1
  66. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend.jsx +1 -1
  67. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend_non_clickable.jsx +1 -2
  68. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend_position.html.erb +1 -1
  69. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend_position.jsx +1 -1
  70. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend_position.md +11 -0
  71. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_negative_numbers.jsx +1 -1
  72. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_secondary_y_axis.jsx +1 -1
  73. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_spline.jsx +1 -2
  74. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_stacked.jsx +1 -2
  75. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_description.md +3 -1
  76. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_block_content.jsx +2 -1
  77. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_color_overrides.jsx +2 -1
  78. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_custom_tooltip.jsx +1 -1
  79. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_custom_tooltip.md +2 -1
  80. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_legend_position.jsx +2 -1
  81. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_with_labels.jsx +1 -1
  82. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_with_legend.jsx +1 -1
  83. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_default.jsx +1 -1
  84. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_default.md +1 -0
  85. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_inner_sizes.jsx +1 -1
  86. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_live_data.jsx +2 -1
  87. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_rounded.jsx +1 -1
  88. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_with_title.jsx +1 -1
  89. data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_description.md +3 -1
  90. data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_color.jsx +1 -1
  91. data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_color.md +2 -2
  92. data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_complex.jsx +2 -1
  93. data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_default.md +1 -0
  94. data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_full_circle.jsx +2 -1
  95. data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_height.jsx +2 -1
  96. data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_min_max.jsx +2 -1
  97. data/app/pb_kits/playbook/pb_pb_gauge_chart/docs/_pb_gauge_chart_units.jsx +2 -1
  98. data/app/pb_kits/playbook/pb_pb_line_graph/docs/_description.md +3 -1
  99. data/app/pb_kits/playbook/pb_pb_line_graph/docs/_pb_line_graph_colors.jsx +1 -1
  100. data/app/pb_kits/playbook/pb_pb_line_graph/docs/_pb_line_graph_default.md +1 -0
  101. data/app/pb_kits/playbook/pb_pb_line_graph/docs/_pb_line_graph_legend_position.html.erb +1 -1
  102. data/app/pb_kits/playbook/pb_popover/docs/_popover_append_to.jsx +4 -1
  103. data/app/pb_kits/playbook/pb_progress_step/_progress_step.scss +384 -262
  104. data/app/pb_kits/playbook/pb_progress_step/docs/_description.md +1 -5
  105. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_color.html.erb +14 -0
  106. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_color.jsx +29 -0
  107. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_color.md +3 -0
  108. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_custom_icon.jsx +31 -0
  109. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_custom_icon.md +1 -0
  110. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_default.html.erb +4 -1
  111. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_default.jsx +14 -3
  112. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_default.md +3 -0
  113. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_tracker.md +3 -0
  114. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_vertical.html.erb +1 -7
  115. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_vertical.md +1 -0
  116. data/app/pb_kits/playbook/pb_progress_step/docs/example.yml +3 -0
  117. data/app/pb_kits/playbook/pb_progress_step/docs/index.js +2 -0
  118. data/app/pb_kits/playbook/pb_progress_step/progress_step.test.js +41 -0
  119. data/app/pb_kits/playbook/pb_radio/docs/_radio_react_hook.jsx +3 -1
  120. data/app/pb_kits/playbook/pb_rich_text_editor/TipTap/Toolbar.tsx +1 -1
  121. data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.tsx +8 -61
  122. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_focus.html.erb +2 -10
  123. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_preview.html.erb +11 -19
  124. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_simple.html.erb +1 -5
  125. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_sticky.html.erb +1 -1
  126. data/app/pb_kits/playbook/pb_rich_text_editor/docs/example.yml +2 -2
  127. data/app/pb_kits/playbook/pb_rich_text_editor/rich_text_editor.rb +7 -16
  128. data/app/pb_kits/playbook/pb_select/docs/_select_react_hook.jsx +3 -1
  129. data/app/pb_kits/playbook/pb_table/_table.tsx +28 -26
  130. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_sizing.jsx +4 -1
  131. data/app/pb_kits/playbook/pb_typeahead/_typeahead.scss +4 -0
  132. data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.tsx +1 -0
  133. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_react_hook.jsx +2 -1
  134. data/app/pb_kits/playbook/pb_user/docs/_user_font_options.jsx +1 -1
  135. data/app/pb_kits/playbook/utilities/globalProps.ts +26 -8
  136. data/app/pb_kits/playbook/utilities/test/globalProps/alignContent.test.js +18 -0
  137. data/app/pb_kits/playbook/utilities/test/globalProps/alignItems.test.js +18 -0
  138. data/app/pb_kits/playbook/utilities/test/globalProps/alignSelf.test.js +18 -0
  139. data/app/pb_kits/playbook/utilities/test/globalProps/display.test.js +18 -0
  140. data/app/pb_kits/playbook/utilities/test/globalProps/flex.test.js +18 -0
  141. data/app/pb_kits/playbook/utilities/test/globalProps/flexDirection.test.js +18 -0
  142. data/app/pb_kits/playbook/utilities/test/globalProps/flexGrow.test.js +18 -0
  143. data/app/pb_kits/playbook/utilities/test/globalProps/flexShrink.test.js +18 -0
  144. data/app/pb_kits/playbook/utilities/test/globalProps/flexWrap.test.js +18 -0
  145. data/app/pb_kits/playbook/utilities/test/globalProps/justifyContent.test.js +18 -0
  146. data/app/pb_kits/playbook/utilities/test/globalProps/justifySelf.test.js +18 -0
  147. data/app/pb_kits/playbook/utilities/test/globalProps/order.test.js +18 -0
  148. data/dist/chunks/_typeahead-Cd3O38ts.js +6 -0
  149. data/dist/chunks/lib-CgpqUb6l.js +29 -0
  150. data/dist/chunks/vendor.js +37 -1
  151. data/dist/playbook-rails-react-bindings.js +1 -1
  152. data/dist/playbook-rails.js +1 -1
  153. data/dist/playbook.css +1 -1
  154. data/lib/playbook/version.rb +1 -1
  155. metadata +34 -12
  156. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_default_rails.md +0 -7
  157. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_inline_rails.md +0 -1
  158. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_sticky_rails.md +0 -1
  159. data/dist/chunks/_line_graph-eQNOB_GQ.js +0 -1
  160. data/dist/chunks/_typeahead-vbfetkuE.js +0 -24
  161. data/dist/chunks/_weekday_stacked-CvJHyUq6.js +0 -37
  162. data/dist/chunks/componentRegistry-DzmmLR2x.js +0 -1
  163. data/dist/chunks/lib-BCrK6CFU.js +0 -29
  164. data/dist/chunks/pb_form_validation-Cj4vdjWI.js +0 -1
  165. data/dist/playbook-doc.js +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c94a476c487c962bfc494f14bc2ce270d0a40ae0d67397ab2cd427c46e737daa
4
- data.tar.gz: bc7fb17ca8d6f5828604f195e1cdfaf26a425b120c57bf98d2f866755a9f1094
3
+ metadata.gz: 707a9a3553c2813cb3297123f4a4f44c1c7d766cec8f3af6bc0c3d269a632e21
4
+ data.tar.gz: e7884a7c8be2f43ef9d3a37a25f6a3a6cc72834486c592b0d6d941c9092182a9
5
5
  SHA512:
6
- metadata.gz: d1fefeb691bfb6fe4bfad24fca4c85eadd0b515b6722d66e3dc85f83dd3245849d21fdd9fb9011cbd8c6c9ff0f104243239bc5bb7019a142d657520019ce3ad7
7
- data.tar.gz: 2590d80114e311bb9526ea81f46a902b99deaf77a444ad19c1adab62f9f828c8f84d59e57c25cb3ff5a4cb1b30151e94c24ecf53b2e523deac934d8505452362
6
+ metadata.gz: c96cce1ab96980e86fc78ce13b394860410986add89fd48814f332e2e1459dead8b9fd86146f76b53bfd595ec143241eb539d14cd9f43388a47a9e5b51489d37
7
+ data.tar.gz: eeaff59ae0aa931d6e4358cee1fa7fc5d3b803cfa3fce18d728be8926f97af4105d023813b4a92416bf64315a17acc11970ab723663b7482c0e310bd0e7353b7
@@ -1,5 +1,6 @@
1
1
  import React from "react"
2
- import { AdvancedTable, colors } from "playbook-ui"
2
+ import AdvancedTable from '../_advanced_table'
3
+ import colors from '../../tokens/exports/_colors.module.scss'
3
4
  import MOCK_DATA from "./advanced_table_mock_data.json"
4
5
 
5
6
 
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { AdvancedTable } from "playbook-ui";
2
+ import AdvancedTable from '../_advanced_table';
3
3
  import MOCK_DATA from "./advanced_table_mock_data.json";
4
4
 
5
5
  const AdvancedTableColumnStylingColumnHeaders = (props) => {
@@ -1,5 +1,7 @@
1
1
  import React, { useState } from "react"
2
- import { AdvancedTable, Button, Flex } from "playbook-ui"
2
+ import AdvancedTable from '../_advanced_table'
3
+ import Flex from '../../pb_flex/_flex'
4
+ import Button from '../../pb_button/_button'
3
5
  import MOCK_DATA from "./advanced_table_mock_data.json"
4
6
  import PAGINATION_MOCK_DATA from "./advanced_table_pagination_mock_data.json"
5
7
 
@@ -1,5 +1,5 @@
1
1
  import React from "react"
2
- import { AdvancedTable } from "playbook-ui"
2
+ import AdvancedTable from '../_advanced_table'
3
3
  import MOCK_DATA from "./advanced_table_mock_data_infinite_scroll.json"
4
4
 
5
5
  const AdvancedTableInfiniteScroll = (props) => {
@@ -1,5 +1,7 @@
1
1
  import React, { useState } from "react";
2
- import { AdvancedTable, TextInput, Body } from "playbook-ui";
2
+ import AdvancedTable from '../../pb_advanced_table/_advanced_table'
3
+ import TextInput from '../../pb_text_input/_text_input'
4
+ import Body from '../../pb_body/_body'
3
5
  import MOCK_DATA from "./advanced_table_mock_data.json";
4
6
 
5
7
  const AdvancedTableInlineEditing = (props) => {
@@ -1,7 +1,8 @@
1
1
  import React from "react"
2
2
  import AdvancedTable from '../_advanced_table'
3
3
  import MOCK_DATA from "./advanced_table_mock_data_with_id.json"
4
- import { colors } from "playbook-ui"
4
+ import colors from '../../tokens/exports/_colors.module.scss'
5
+
5
6
 
6
7
  const AdvancedTableRowStyling = (props) => {
7
8
  const columnDefinitions = [
@@ -5,6 +5,7 @@ import { globalProps } from '../utilities/globalProps'
5
5
 
6
6
  import Button from '../pb_button/_button'
7
7
  import Tooltip from '../pb_tooltip/_tooltip'
8
+ import CircleIconButton from '../pb_circle_icon_button/_circle_icon_button'
8
9
 
9
10
  import usePBCopy from './usePBCopy'
10
11
 
@@ -18,6 +19,7 @@ type CopyButtonProps = {
18
19
  tooltipPlacement?: 'top' | 'right' | 'bottom' | 'left'
19
20
  tooltipText?: string
20
21
  value?: string
22
+ variant?: 'button' | 'icon'
21
23
  timeout?: number
22
24
  }
23
25
 
@@ -28,11 +30,12 @@ const CopyButton = (props: CopyButtonProps) => {
28
30
  data = {},
29
31
  from = '',
30
32
  id,
31
- text= 'Copy',
33
+ text = 'Copy',
32
34
  timeout = 1000,
33
- tooltipPlacement= 'bottom',
35
+ tooltipPlacement = 'bottom',
34
36
  tooltipText = 'Copied!',
35
37
  value = '',
38
+ variant = 'icon',
36
39
  } = props
37
40
 
38
41
  const [copied, copy] = usePBCopy({ value, from, timeout })
@@ -42,7 +45,8 @@ const CopyButton = (props: CopyButtonProps) => {
42
45
  const classes = classnames(buildCss('pb_copy_button_kit'), globalProps(props), className)
43
46
 
44
47
  return (
45
- <div {...ariaProps}
48
+ <div
49
+ {...ariaProps}
46
50
  {...dataProps}
47
51
  className={classes}
48
52
  id={id}
@@ -53,11 +57,20 @@ const CopyButton = (props: CopyButtonProps) => {
53
57
  showTooltip={false}
54
58
  text={tooltipText}
55
59
  >
56
- <Button icon="copy"
57
- onClick={copy}
58
- >
59
- {text}
60
- </Button>
60
+ {variant === 'icon' ? (
61
+ <CircleIconButton
62
+ icon="copy"
63
+ onClick={copy}
64
+ variant="link"
65
+ />
66
+ ) : (
67
+ <Button
68
+ icon="copy"
69
+ onClick={copy}
70
+ >
71
+ {text}
72
+ </Button>
73
+ )}
61
74
  </Tooltip>
62
75
  </div>
63
76
  )
@@ -1,6 +1,10 @@
1
1
  <%= pb_content_tag do %>
2
- <%= pb_rails("button", props: { icon: "copy" }) do %>
3
- <%= object.text %>
2
+ <% if object.variant == "icon" %>
3
+ <%= pb_rails("circle_icon_button", props: { icon: "copy", variant: "link" }) %>
4
+ <% else %>
5
+ <%= pb_rails("button", props: { icon: "copy" }) do %>
6
+ <%= object.text %>
7
+ <% end %>
4
8
  <% end %>
5
9
  <% if object.id %>
6
10
  <%= pb_rails("tooltip", props: {
@@ -12,6 +12,9 @@ module Playbook
12
12
  default: "Copied!"
13
13
  prop :value
14
14
  prop :from
15
+ prop :variant, type: Playbook::Props::Enum,
16
+ values: %w[button icon],
17
+ default: "icon"
15
18
 
16
19
  def classname
17
20
  generate_classname("pb_copy_button_kit")
@@ -37,6 +37,29 @@ it('copies the value to clipboard and pastes it into an input', async () => {
37
37
  expect(navigator.clipboard.writeText).toHaveBeenCalledWith("copy");
38
38
  })
39
39
 
40
+ test('passes text and tooltip props to icon variant', () => {
41
+ render(
42
+ <CopyButton
43
+ data={{ testid: 'text-test' }}
44
+ tooltipPlacement="right"
45
+ tooltipText="Text copied!"
46
+ value="copy"
47
+ />
48
+ )
49
+
50
+ const kit = screen.getByTestId('text-test')
51
+ const button = kit.querySelector('.pb_button_kit.pb_button_link.pb_button_inline.pb_button_enabled')
52
+ expect(button).toBeInTheDocument()
53
+
54
+ fireEvent.click(button)
55
+ const tooltipContent = screen.getByText("Text copied!")
56
+ expect(tooltipContent).toHaveTextContent("Text copied!")
57
+
58
+ const tooltip = kit.querySelector('.pb_tooltip_kit')
59
+ expect(tooltip).toBeInTheDocument()
60
+ })
61
+
62
+
40
63
  test('passes text and tooltip props to button', () => {
41
64
  render(
42
65
  <CopyButton
@@ -45,6 +68,7 @@ test('passes text and tooltip props to button', () => {
45
68
  tooltipPlacement="right"
46
69
  tooltipText="Text copied!"
47
70
  value="copy"
71
+ variant="button"
48
72
  />
49
73
  )
50
74
 
@@ -0,0 +1,9 @@
1
+ <%= pb_rails("copy_button", props: {
2
+ text: "Copy Text",
3
+ tooltip_position: "right",
4
+ tooltip_text: "Text copied!",
5
+ value: "Playbook makes it easy to support bleeding edge, or legacy systems. Use Playbook's 200+ components and end-to-end design language to create simple, intuitive and beautiful experiences with ease.",
6
+ variant: "button",
7
+ }) %>
8
+
9
+ <%= pb_rails("textarea", props: { margin_top: "xs", placeholder: "Copy and paste here" }) %>
@@ -0,0 +1,24 @@
1
+ import React from 'react'
2
+
3
+ import CopyButton from '../_copy_button'
4
+ import Textarea from '../../pb_textarea/_textarea'
5
+
6
+ const CopyButtonVariant = (props) => (
7
+ <div>
8
+ <CopyButton
9
+ {...props}
10
+ text="Copy Text"
11
+ tooltipPlacement="right"
12
+ tooltipText="Text copied!"
13
+ value="Playbook makes it easy to support bleeding edge, or legacy systems. Use Playbook’s 200+ components and end-to-end design language to create simple, intuitive and beautiful experiences with ease."
14
+ variant="button"
15
+ />
16
+
17
+ <Textarea
18
+ {...props}
19
+ placeholder="Copy and paste here"
20
+ />
21
+ </div>
22
+ )
23
+
24
+ export default CopyButtonVariant
@@ -0,0 +1 @@
1
+ Pass in `variant: "button"` to replace the Circle Icon Button with the Button kit. Set the button's text with the `text` prop.
@@ -0,0 +1 @@
1
+ Pass in `variant="button"` to replace the Circle Icon Button with the Button kit. Set the button's text with the `text` prop.
@@ -1,2 +1,2 @@
1
- <%= pb_rails("copy_button", props: { id: "default-copy-button", text: "Copy Text", value: "Playbook makes it easy to support bleeding edge, or legacy systems. Use Playbook’s 200+ components and end-to-end design language to create simple, intuitive and beautiful experiences with ease." } ) %>
2
- <%= pb_rails("textarea", props: { margin_top: "xs", placeholder: "Copy and paste here" }) %>
1
+ <%= pb_rails("copy_button", props: { id: "default-copy-button", value: "Playbook makes it easy to support bleeding edge, or legacy systems. Use Playbook’s 200+ components and end-to-end design language to create simple, intuitive and beautiful experiences with ease." } ) %>
2
+ <%= pb_rails("textarea", props: { margin_top: "xs", placeholder: "Click the icon above to copy and paste here" }) %>
@@ -7,7 +7,6 @@ const CopyButtonDefault = (props) => (
7
7
  <div>
8
8
  <CopyButton
9
9
  {...props}
10
- text="Copy Text"
11
10
  tooltipPlacement="right"
12
11
  tooltipText="Text copied!"
13
12
  value="Playbook makes it easy to support bleeding edge, or legacy systems. Use Playbook’s 200+ components and end-to-end design language to create simple, intuitive and beautiful experiences with ease."
@@ -15,7 +14,7 @@ const CopyButtonDefault = (props) => (
15
14
 
16
15
  <Textarea
17
16
  {...props}
18
- placeholder="Copy and paste here"
17
+ placeholder="Click the icon above to copy and paste here"
19
18
  />
20
19
  </div>
21
20
  )
@@ -1,5 +1,5 @@
1
1
  <%= pb_rails("body", props: { id: "body", text: "Copy this body text!"}) %>
2
- <%= pb_rails("copy_button", props: { text: "Copy Body text", from: "body", id: "copy-body-button" }) %>
2
+ <%= pb_rails("copy_button", props: { text: "Copy Body text", from: "body", id: "copy-body-button", variant: "button" }) %>
3
3
  <%= pb_rails("text_input", props: { margin_top: "xs", placeholder: "Copy and paste here" }) %>
4
- <%= pb_rails("copy_button", props: { text: "Copy Text Input", from: "copy-input", id: "copy-input-button" }) %>
4
+ <%= pb_rails("copy_button", props: { text: "Copy Text Input", from: "copy-input", id: "copy-input-button", variant: "button" }) %>
5
5
  <%= pb_rails("text_input", props: { margin_top: "xs", id: "copy-input" , value: "Copy and paste here" }) %>
@@ -21,6 +21,7 @@ const CopyButtonFrom = (props) => {
21
21
  text="Copy Body text"
22
22
  tooltipPlacement="right"
23
23
  tooltipText="Body text copied!"
24
+ variant="button"
24
25
  />
25
26
 
26
27
  <TextInput
@@ -36,6 +37,7 @@ const CopyButtonFrom = (props) => {
36
37
  text="Copy Text Input"
37
38
  tooltipPlacement="right"
38
39
  tooltipText="Text input copied!"
40
+ variant="button"
39
41
  />
40
42
 
41
43
  <Textarea
@@ -1,10 +1,12 @@
1
1
  examples:
2
2
  rails:
3
3
  - copy_button_default: Default
4
+ - copy_button_button_variant: Button Variant
4
5
  - copy_button_from: Copy From
5
6
  - copy_button_hook_rails: Copy Hook
6
7
 
7
8
  react:
8
9
  - copy_button_default: Default
10
+ - copy_button_button_variant: Button Variant
9
11
  - copy_button_from: Copy From
10
12
  - copy_button_hook: Copy Hook
@@ -1,3 +1,4 @@
1
1
  export { default as CopyButtonDefault } from './_copy_button_default.jsx'
2
2
  export { default as CopyButtonFrom } from './_copy_button_from.jsx'
3
3
  export { default as CopyButtonHook } from './_copy_button_hook.jsx'
4
+ export { default as CopyButtonButtonVariant } from './_copy_button_button_variant.jsx'
@@ -0,0 +1 @@
1
+ Abbreviate larger amounts into thousands (K), millions (M), billions (B), and even trillions (T).
@@ -0,0 +1 @@
1
+ Use `decimals: "matching"` when you want the full decimal amount displayed as a single number rather than split visually.
@@ -0,0 +1 @@
1
+ Use `decimals="matching"` when you want the full decimal amount displayed as a single number rather than split visually.
@@ -1,4 +1,14 @@
1
1
  <%= pb_rails("currency", props: {
2
2
  amount: "-2,000.50",
3
3
  size: "sm",
4
+ }) %>
5
+
6
+ <%= pb_rails("currency", props: {
7
+ amount: "-2,000.50",
8
+ size: "md",
9
+ }) %>
10
+
11
+ <%= pb_rails("currency", props: {
12
+ amount: "-2,000.50",
13
+ size: "lg",
4
14
  }) %>
@@ -9,6 +9,16 @@ const CurrencyNegative = (props) => {
9
9
  amount="-2,000.50"
10
10
  {...props}
11
11
  />
12
+ <Currency
13
+ amount="-2,000.50"
14
+ size="md"
15
+ {...props}
16
+ />
17
+ <Currency
18
+ amount="-2,000.50"
19
+ size="lg"
20
+ {...props}
21
+ />
12
22
  </>
13
23
  )
14
24
  }
@@ -0,0 +1 @@
1
+ Small `Currency` kits have the negative sign on the lefthand side of the "$" symbol.
@@ -0,0 +1 @@
1
+ Remove the "$" symbol by setting an empty string: `symbol: ""`.
@@ -0,0 +1 @@
1
+ Remove the "$" symbol by setting an empty string: `symbol=""`.
@@ -1,3 +1,10 @@
1
+ <%= pb_rails("currency", props: {
2
+ amount: "30,327.43",
3
+ label: "Default",
4
+ size: "sm",
5
+ margin_bottom: "md",
6
+ }) %>
7
+
1
8
  <%= pb_rails("currency", props: {
2
9
  amount: "2,000.50",
3
10
  emphasized: false,
@@ -5,6 +5,13 @@ import Currency from '../_currency'
5
5
  const CurrencyVariants = (props) => {
6
6
  return (
7
7
  <>
8
+ <Currency
9
+ amount="30,327.43"
10
+ label="Default"
11
+ marginBottom="md"
12
+ size="sm"
13
+ {...props}
14
+ />
8
15
  <Currency
9
16
  amount="2,000.50"
10
17
  emphasized={false}
@@ -1,2 +1,2 @@
1
- Use to display monetary amounts, typically on dashboards or other layouts to show an overview or summary. User understanding increase when paired with labels.
2
- Cents is automatically ".00" unless other wise overwritten (i.e. unit prop).
1
+ Use this kit to display monetary amounts, typically on dashboards or other layouts to show an overview or summary. Pairing it with labels improves user understanding.
2
+ Cents are automatically ".00" unless otherwise overwritten (i.e. `unit` prop).
@@ -182,6 +182,33 @@ const datePickerHelper = (config: DatePickerConfig, scrollContainer: string | HT
182
182
  }
183
183
  }
184
184
 
185
+ const positionCalendarIfNeeded = (fp: Instance) => {
186
+ const cal = document.querySelector(`#cal-${pickerId}`) as HTMLElement
187
+ if (!cal) return
188
+
189
+ const inputRect = fp.input.getBoundingClientRect()
190
+ const h = cal.getBoundingClientRect().height || 300
191
+ const spaceBelow = window.innerHeight - inputRect.bottom
192
+ const spaceAbove = inputRect.top
193
+
194
+ if (spaceBelow < h + 10 && spaceAbove >= h + 10) {
195
+ if (staticPosition) {
196
+ cal.style.top = 'auto'
197
+ cal.style.bottom = 'calc(100% + 5px)'
198
+ } else {
199
+ cal.style.position = 'fixed'
200
+ cal.style.top = `${Math.max(10, inputRect.top - h - 5)}px`
201
+ cal.style.left = `${inputRect.left}px`
202
+ }
203
+ } else if (staticPosition) {
204
+ cal.style.top = ''
205
+ cal.style.bottom = ''
206
+ } else {
207
+ Object.assign(cal.style, { position: '', top: '', left: '', bottom: '', right: '', transform: '' })
208
+ fp._positionCalendar()
209
+ }
210
+ }
211
+
185
212
  const setPlugins = (thisRangesEndToday: boolean, customQuickPickDates: any) => {
186
213
  const pluginList = []
187
214
 
@@ -239,6 +266,9 @@ const datePickerHelper = (config: DatePickerConfig, scrollContainer: string | HT
239
266
  }
240
267
  }
241
268
 
269
+ // Store resize / position handler reference for cleanup
270
+ let resizeRepositionHandlerRef: (() => void) | null = null
271
+
242
272
  // ===========================================================
243
273
  // | Flatpickr initializer w/ config |
244
274
  // ===========================================================
@@ -260,13 +290,24 @@ const datePickerHelper = (config: DatePickerConfig, scrollContainer: string | HT
260
290
  minDate: setMinDate,
261
291
  mode,
262
292
  nextArrow: '<i class="far fa-angle-right"></i>',
263
- onOpen: [() => {
293
+ onOpen: [(_selectedDates, _dateStr, fp) => {
264
294
  calendarResizer()
265
- window.addEventListener('resize', calendarResizer)
295
+ if (resizeRepositionHandlerRef) {
296
+ window.removeEventListener('resize', resizeRepositionHandlerRef)
297
+ }
298
+ resizeRepositionHandlerRef = () => {
299
+ calendarResizer()
300
+ positionCalendarIfNeeded(fp)
301
+ }
302
+ window.addEventListener('resize', resizeRepositionHandlerRef)
266
303
  if (!staticPosition && scrollContainer) attachToScroll(scrollContainer)
304
+ positionCalendarIfNeeded(fp)
267
305
  }],
268
306
  onClose: [(selectedDates, dateStr) => {
269
- window.removeEventListener('resize', calendarResizer)
307
+ if (resizeRepositionHandlerRef) {
308
+ window.removeEventListener('resize', resizeRepositionHandlerRef)
309
+ resizeRepositionHandlerRef = null
310
+ }
270
311
  if (!staticPosition && scrollContainer) detachFromScroll(scrollContainer as HTMLElement)
271
312
  onClose(selectedDates, dateStr)
272
313
  }],
@@ -17,6 +17,7 @@ type DateTimeProps = {
17
17
  htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
18
18
  id?: string,
19
19
  size?: "sm" | "md",
20
+ showCurrentYear?: boolean,
20
21
  showDayOfWeek: boolean,
21
22
  showIcon?: boolean,
22
23
  timeZone?: string
@@ -32,6 +33,7 @@ const DateTime = (props: DateTimeProps): React.ReactElement => {
32
33
  showDayOfWeek = false,
33
34
  datetime,
34
35
  id,
36
+ showCurrentYear = false,
35
37
  showIcon = false,
36
38
  size = 'md',
37
39
  timeZone = 'America/New_York',
@@ -59,6 +61,7 @@ const DateTime = (props: DateTimeProps): React.ReactElement => {
59
61
  vertical="baseline"
60
62
  >
61
63
  <FormattedDate
64
+ showCurrentYear={showCurrentYear}
62
65
  showDayOfWeek={showDayOfWeek}
63
66
  size={size}
64
67
  value={datetime}
@@ -9,6 +9,7 @@
9
9
  dark: object.dark,
10
10
  date: object.date,
11
11
  show_day_of_week: object.show_day_of_week,
12
+ show_current_year: object.show_current_year,
12
13
  size: object.size,
13
14
  timezone: object.timezone,
14
15
  }) %>
@@ -16,6 +16,7 @@ module Playbook
16
16
  prop :dark, type: Playbook::Props::Boolean, default: false
17
17
  prop :show_icon, type: Playbook::Props::Boolean, default: false
18
18
  prop :show_day_of_week, type: Playbook::Props::Boolean, default: false
19
+ prop :show_current_year, type: Playbook::Props::Boolean, default: false
19
20
 
20
21
  def classname
21
22
  generate_classname("pb_date_time_kit", align)
@@ -0,0 +1,4 @@
1
+ <%= pb_rails("date_time", props: {
2
+ date: DateTime.now,
3
+ show_current_year: true
4
+ }) %>
@@ -0,0 +1,14 @@
1
+ import React from 'react'
2
+ import DateTime from '../_date_time'
3
+
4
+ const DateTimeShowCurrentYear = (props) => (
5
+ <div>
6
+ <DateTime
7
+ datetime={new Date()}
8
+ showCurrentYear
9
+ {...props}
10
+ />
11
+ </div>
12
+ )
13
+
14
+ export default DateTimeShowCurrentYear
@@ -0,0 +1 @@
1
+ Pass in `show_current_year` to show this date's current year.
@@ -0,0 +1 @@
1
+ Pass in `showCurrentYear` to show this date's current year.
@@ -1,14 +1,16 @@
1
1
  examples:
2
-
2
+
3
3
  rails:
4
4
  - date_time_default: Default
5
5
  - date_time_align: Alignment
6
6
  - date_time_size: Size
7
+ - date_time_show_current_year: Show Current Year
7
8
 
8
9
  react:
9
10
  - date_time_default: Default
10
11
  - date_time_align: Alignment
11
12
  - date_time_size: Size
13
+ - date_time_show_current_year: Show Current Year
12
14
 
13
15
  swift:
14
16
  - date_time_default_swift: Default
@@ -1,3 +1,4 @@
1
1
  export { default as DateTimeDefault } from './_date_time_default.jsx'
2
2
  export { default as DateTimeAlign } from './_date_time_align.jsx'
3
3
  export { default as DateTimeSize } from './_date_time_size.jsx'
4
+ export { default as DateTimeShowCurrentYear } from './_date_time_show_current_year.jsx'
@@ -17,6 +17,7 @@ type DateTimeStackedProps = {
17
17
  datetime: Date,
18
18
  dark: boolean,
19
19
  timeZone?: string,
20
+ showCurrentYear?: boolean,
20
21
  }
21
22
 
22
23
  const DateTimeStacked = (props: DateTimeStackedProps): React.ReactElement => {
@@ -28,6 +29,7 @@ const DateTimeStacked = (props: DateTimeStackedProps): React.ReactElement => {
28
29
  dark,
29
30
  htmlOptions = {},
30
31
  timeZone = 'America/New_York',
32
+ showCurrentYear = false,
31
33
  } = props
32
34
 
33
35
  const classes = buildCss('pb_date_time_stacked_kit', globalProps(props))
@@ -46,6 +48,7 @@ const DateTimeStacked = (props: DateTimeStackedProps): React.ReactElement => {
46
48
  bold
47
49
  dark={dark}
48
50
  date={date || datetime}
51
+ showCurrentYear={showCurrentYear}
49
52
  />
50
53
  </FlexItem>
51
54
 
@@ -1,8 +1,8 @@
1
- <%= pb_content_tag do %>
1
+ <%= pb_content_tag do %>
2
2
 
3
3
  <%= pb_rails("flex", props: {classname: "flex-container", vertical: "stretch"}) do %>
4
4
  <%= pb_rails("body", props: {classname: "flex-item"}) do %>
5
- <%= pb_rails("date_stacked", props: { date: object.date_time_value, size: "sm", align: "right", bold: true, dark: object.dark }) %>
5
+ <%= pb_rails("date_stacked", props: { date: object.date_time_value, size: "sm", align: "right", bold: true, dark: object.dark, show_current_year: object.show_current_year }) %>
6
6
  <% end %>
7
7
  <%= pb_rails("section_separator", props: { orientation: "vertical", classname: "date-time-padding" }) %>
8
8
  <%= pb_rails("body", props: {classname: "flex-item"}) do %>
@@ -10,6 +10,8 @@ module Playbook
10
10
  default: false
11
11
  prop :timezone, type: Playbook::Props::String,
12
12
  default: "America/New_York"
13
+ prop :show_current_year, type: Playbook::Props::Boolean,
14
+ default: false
13
15
 
14
16
  def date_time_value
15
17
  date || date_time