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
@@ -41,3 +41,36 @@ test('renders time in timezone', () => {
41
41
  const kit = renderKit(DateTimeStacked, props)
42
42
  expect(kit).toHaveTextContent(`${monthDayYear}11:00aMDT`)
43
43
  })
44
+
45
+ test('renders current year when showCurrentYear is true', () => {
46
+ const currentYearDate = new Date()
47
+ const currentYear = currentYearDate.getFullYear()
48
+
49
+ const kit = renderKit(DateTimeStacked, {
50
+ data: { testid: 'datetimestacked-current-year' },
51
+ datetime: currentYearDate,
52
+ dark: false,
53
+ showCurrentYear: true,
54
+ })
55
+ expect(kit).toHaveTextContent(currentYear.toString())
56
+ })
57
+
58
+ test('hides current year by default', () => {
59
+ const currentYearDate = new Date()
60
+ const currentYear = currentYearDate.getFullYear()
61
+
62
+ const kit = renderKit(DateTimeStacked, {
63
+ data: { testid: 'datetimestacked-hide-year' },
64
+ datetime: currentYearDate,
65
+ dark: false,
66
+ })
67
+
68
+ const yearElement = kit.querySelector('.pb_caption_kit_xs')
69
+
70
+ if (yearElement) {
71
+ expect(yearElement.textContent).not.toBe(currentYear.toString())
72
+ } else {
73
+
74
+ expect(yearElement).toBeNull()
75
+ }
76
+ })
@@ -0,0 +1,4 @@
1
+ <%= pb_rails("date_time_stacked", props: { date_time: DateTime.now, show_current_year: true }) %>
2
+ <br>
3
+ <%= pb_rails("date_time_stacked", props: { date_time: DateTime.now, show_current_year: true, timezone: "America/Denver" }) %>
4
+
@@ -0,0 +1,22 @@
1
+ import React from 'react'
2
+
3
+ import DateTimeStacked from '../_date_time_stacked'
4
+
5
+ const DateTimeStackedShowCurrentYear = (props) => (
6
+ <div>
7
+ <DateTimeStacked
8
+ datetime={new Date()}
9
+ showCurrentYear
10
+ {...props}
11
+ />
12
+ <br />
13
+ <DateTimeStacked
14
+ datetime={new Date()}
15
+ showCurrentYear
16
+ timeZone="America/Denver"
17
+ {...props}
18
+ />
19
+ </div>
20
+ );
21
+
22
+ export default DateTimeStackedShowCurrentYear;
@@ -0,0 +1 @@
1
+ By default, the Date Time Stacked kit does NOT display the year if it is the current year. If you want to display the current year you can do so by setting `showCurrentYear`/`show_current_year` to true as shown here.
@@ -2,9 +2,11 @@ examples:
2
2
 
3
3
  rails:
4
4
  - date_time_stacked_default: Default
5
-
5
+ - date_time_stacked_show_current_year: Show Current Year
6
+
6
7
  react:
7
8
  - date_time_stacked_default: Default
9
+ - date_time_stacked_show_current_year: Show Current Year
8
10
 
9
11
  swift:
10
12
  - date_time_stacked_default_swift: Default
@@ -1 +1,2 @@
1
1
  export { default as DateTimeStackedDefault } from './_date_time_stacked_default.jsx'
2
+ export { default as DateTimeStackedShowCurrentYear } from './_date_time_stacked_show_current_year.jsx'
@@ -1,7 +1,7 @@
1
1
  <%= pb_rails("button", props: { text: "Open Complex Dialog", data:{"open-dialog": "dialog-complex"} }) %>
2
2
 
3
3
  <%= pb_rails("dialog", props: { id:"dialog-complex", size: "lg", full_height: true }) do %>
4
- <form>
4
+ <%= pb_form_with(scope: :example, method: :get, url: "", options: { remote: true }) do |form| %>
5
5
  <%= pb_rails("dialog/dialog_header", props: { id: "dialog-complex" } ) do %>
6
6
  <%= pb_rails("body", props: { text: "What do you need us to take care of?" }) %>
7
7
  <% end %>
@@ -13,5 +13,5 @@
13
13
 
14
14
  <% end %>
15
15
  <%= pb_rails("dialog/dialog_footer", props: {cancel_button: "Back", confirm_button: "Send my Issue", confirm_button_id:"confirm-complex", id: "dialog-complex"}) %>
16
- </form>
16
+ <% end %>
17
17
  <% end %>
@@ -33,6 +33,8 @@ export default class PbDropdown extends PbEnhancedElement {
33
33
  this.formPillProps = this.element.dataset.formPillProps
34
34
  ? JSON.parse(this.element.dataset.formPillProps)
35
35
  : {};
36
+ const baseInput = this.element.querySelector(DROPDOWN_INPUT);
37
+ this.wasOriginallyRequired = baseInput && baseInput.hasAttribute("required");
36
38
  this.setDefaultValue();
37
39
  this.bindEventListeners();
38
40
  this.bindSearchInput();
@@ -356,17 +358,6 @@ export default class PbDropdown extends PbEnhancedElement {
356
358
  }
357
359
 
358
360
  clearFormValidation(input) {
359
- if (input.checkValidity()) {
360
- const dropdownWrapperElement = input.closest(".dropdown_wrapper");
361
- dropdownWrapperElement.classList.remove("error");
362
-
363
- const errorLabelElement = dropdownWrapperElement.querySelector(
364
- ".pb_body_kit_negative"
365
- );
366
- if (errorLabelElement) {
367
- errorLabelElement.remove();
368
- }
369
- }
370
361
  if (this.isMultiSelect) {
371
362
  if (this.selectedOptions.size > 0) {
372
363
  const dropdownWrapperElement = input.closest(".dropdown_wrapper");
@@ -377,6 +368,19 @@ export default class PbDropdown extends PbEnhancedElement {
377
368
  if (errorLabelElement) {
378
369
  errorLabelElement.remove();
379
370
  }
371
+ return;
372
+ }
373
+ }
374
+
375
+ if (input.checkValidity()) {
376
+ const dropdownWrapperElement = input.closest(".dropdown_wrapper");
377
+ dropdownWrapperElement.classList.remove("error");
378
+
379
+ const errorLabelElement = dropdownWrapperElement.querySelector(
380
+ ".pb_body_kit_negative"
381
+ );
382
+ if (errorLabelElement) {
383
+ errorLabelElement.remove();
380
384
  }
381
385
  }
382
386
  }
@@ -585,7 +589,9 @@ export default class PbDropdown extends PbEnhancedElement {
585
589
  // for multi_select, for each selectedOption, create a hidden input
586
590
  const name = baseInput.getAttribute("name");
587
591
  this.selectedOptions.forEach((raw) => {
588
- const id = JSON.parse(raw).id;
592
+ const optionData = JSON.parse(raw);
593
+ // Use id if available, otherwise fall back to value
594
+ const id = optionData.id || optionData.value;
589
595
  const inp = document.createElement("input");
590
596
  inp.type = "hidden";
591
597
  inp.name = name;
@@ -593,7 +599,19 @@ export default class PbDropdown extends PbEnhancedElement {
593
599
  inp.dataset.generated = "true";
594
600
  baseInput.insertAdjacentElement("afterend", inp);
595
601
  });
596
- baseInput.value = "";
602
+
603
+ // For multi-select, remove required from base input when there are selections
604
+ // The generated inputs handle the form submission with actual values
605
+ // Restore required attribute when there are no selections (if it was originally required)
606
+ if (this.selectedOptions.size > 0) {
607
+ baseInput.value = "";
608
+ baseInput.removeAttribute("required");
609
+ } else {
610
+ baseInput.value = "";
611
+ if (this.wasOriginallyRequired) {
612
+ baseInput.setAttribute("required", "");
613
+ }
614
+ }
597
615
  }
598
616
 
599
617
  handleBackspaceClear() {
@@ -1,5 +1,6 @@
1
1
  import React from 'react'
2
- import { EmptyState, Flex } from 'playbook-ui'
2
+ import EmptyState from '../_empty_state'
3
+ import Flex from '../../pb_flex/_flex'
3
4
 
4
5
  const EmptyStateAlignment = (props) => (
5
6
  <Flex align="center"
@@ -1,5 +1,6 @@
1
1
  import React from 'react'
2
- import { EmptyState, Flex } from 'playbook-ui'
2
+ import EmptyState from '../_empty_state'
3
+ import Flex from '../../pb_flex/_flex'
3
4
 
4
5
  const EmptyStateDefault = (props) => (
5
6
  <Flex align="center"
@@ -1,5 +1,6 @@
1
1
  import React from 'react'
2
- import { EmptyState, Flex } from 'playbook-ui'
2
+ import EmptyState from '../_empty_state'
3
+ import Flex from '../../pb_flex/_flex'
3
4
 
4
5
  const EmptyStateOrientation = (props) => (
5
6
  <Flex align="center"
@@ -1,5 +1,6 @@
1
1
  import React from 'react'
2
- import { EmptyState, Flex } from 'playbook-ui'
2
+ import EmptyState from '../_empty_state'
3
+ import Flex from '../../pb_flex/_flex'
3
4
 
4
5
  const EmptyStateSize = (props) => (
5
6
  <Flex align="center"
@@ -1,5 +1,8 @@
1
1
  import React from 'react'
2
- import { Card, Caption, FormPill, Typeahead } from 'playbook-ui'
2
+ import Card from '../../pb_card/_card'
3
+ import Caption from '../../pb_caption/_caption'
4
+ import FormPill from '../_form_pill'
5
+ import Typeahead from '../../pb_typeahead/_typeahead'
3
6
 
4
7
  const names = [
5
8
  { label: 'Alexander Nathaniel Montgomery', value: 'Alexander Nathaniel Montgomery' },
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { LoadingInline } from 'playbook-ui'
2
+ import LoadingInline from '../_loading_inline'
3
3
 
4
4
  const LoadingInlineVariant = (props) => {
5
5
  return (
@@ -1,3 +1,5 @@
1
- This kit is a wrapper around the Highcharts library. It applies styling and default settings but does NOT ship Highcharts. In order to use this kit, 'highcharts' and 'highcharts-react-official' must be installed in your repo. Once done, any prop or functionality provided by Highcharts can be used with this kit without requiring specific props from Playbook. The doc examples below showcase a few common usecases but are not a comprehensive list of all the functionalities possible.
1
+ **In order to use this kit, 'highcharts' and 'highcharts-react-official' must be installed in your repo.**
2
+
3
+ This kit is a wrapper around the Highcharts library. It applies styling and default settings but does NOT ship Highcharts. Once 'highcharts' and 'highcharts-react-official are installed into your repo, any prop or functionality provided by Highcharts can be used with this kit without requiring specific props from Playbook. The doc examples below showcase a few common usecases but are not a comprehensive list of all the functionalities possible.
2
4
 
3
5
  See the [highcharts API docs](https://api.highcharts.com/highcharts/) for a comprehensive look at what is possible.
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { PbBarGraph } from 'playbook-ui'
2
+ import PbBarGraph from '../_pb_bar_graph'
3
3
  import colors from '../../tokens/exports/_colors.module.scss'
4
4
 
5
5
  const chartData = [{
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { PbBarGraph } from 'playbook-ui'
2
+ import PbBarGraph from '../_pb_bar_graph'
3
3
 
4
4
  const chartData = [{
5
5
  name: 'Installation',
@@ -0,0 +1 @@
1
+ In order to use this kit, 'highcharts' and 'highcharts-react-official' must be installed in your repo.
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { PbBarGraph } from 'playbook-ui'
2
+ import PbBarGraph from '../_pb_bar_graph'
3
3
 
4
4
  const chartData = [{
5
5
  name: 'Number of Installations',
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { PbBarGraph } from 'playbook-ui'
2
+ import PbBarGraph from '../_pb_bar_graph'
3
3
 
4
4
 
5
5
  const chartOptions = {
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { PbBarGraph } from 'playbook-ui'
2
+ import PbBarGraph from '../_pb_bar_graph'
3
3
 
4
4
 
5
5
  const chartData = [{
@@ -1,6 +1,5 @@
1
1
  import React from 'react'
2
- import { PbBarGraph } from 'playbook-ui'
3
-
2
+ import PbBarGraph from '../_pb_bar_graph'
4
3
 
5
4
  const chartData = [{
6
5
  name: 'Number of Installations',
@@ -36,7 +36,7 @@
36
36
  }
37
37
  %>
38
38
 
39
- <%= pb_rails("title", props: {size: 4, text: "align | vertical_align", padding_top: "sm", padding_bottom: "sm"})%>
39
+ <%= pb_rails("title", props: {size: 4, text: "align | verticalAlign", padding_top: "sm", padding_bottom: "sm"})%>
40
40
 
41
41
 
42
42
  <%= pb_rails("pb_bar_graph", props: {options: chart_options_right}) %>
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { PbBarGraph } from 'playbook-ui'
2
+ import PbBarGraph from '../_pb_bar_graph'
3
3
  import Title from "../../pb_title/_title"
4
4
 
5
5
 
@@ -0,0 +1,11 @@
1
+ Highcharts provides many options for customizing the legend display. This example showcases the following:
2
+
3
+ `align` can be used to align the legend left, right or center (defaults to center)
4
+
5
+ `verticalAlign` can be used to place the legend above the graph. Options are top, middle, bottom with default set to bottom
6
+
7
+ `layout` determines the position of the legend items. Options are horizontal, vertical or proximate with default set to horizontal `layout: proximate` will place the legend items as close as possible to the graphs they're representing. It will also determine whether to place the legend above/below or on the side of the plot area, if the legend is in a corner.
8
+
9
+ `x` offsets the legend relative to its horizontal alignment. Negative x moves it to the left, positive x moves it to the right (defaults to 0)
10
+
11
+ `y` offsets the legend relative to its vertical alignment. Negative y moves it up, positive y moves it down (defaults to 0)
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { PbBarGraph } from 'playbook-ui'
2
+ import PbBarGraph from '../_pb_bar_graph'
3
3
 
4
4
 
5
5
  const chartData = [{
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { PbBarGraph } from 'playbook-ui'
2
+ import PbBarGraph from '../_pb_bar_graph'
3
3
 
4
4
  import colors from '../../tokens/exports/_colors.module.scss'
5
5
  import typography from '../../tokens/exports/_typography.module.scss'
@@ -1,6 +1,5 @@
1
1
  import React from 'react'
2
- import { PbBarGraph } from 'playbook-ui'
3
-
2
+ import PbBarGraph from '../_pb_bar_graph'
4
3
 
5
4
  const chartData = [{
6
5
  name: 'Number of Installations',
@@ -1,6 +1,5 @@
1
1
  import React from 'react'
2
- import { PbBarGraph } from 'playbook-ui'
3
-
2
+ import PbBarGraph from '../_pb_bar_graph'
4
3
 
5
4
  const chartData = [{
6
5
  name: 'Installation',
@@ -1,3 +1,5 @@
1
- This kit is a wrapper around the Highcharts library. It applies styling and default settings but does NOT ship Highcharts. In order to use this kit, 'highcharts' and 'highcharts-react-official' must be installed in your repo. Once done, any prop or functionality provided by Highcharts can be used with this kit without requiring specific props from Playbook. The doc examples below showcase a few common usecases but are not a comprehensive list of all the functionalities possible.
1
+ **In order to use this kit, 'highcharts' and 'highcharts-react-official' must be installed in your repo.**
2
+
3
+ This kit is a wrapper around the Highcharts library. It applies styling and default settings but does NOT ship Highcharts. Once 'highcharts' and 'highcharts-react-official are installed into your repo, any prop or functionality provided by Highcharts can be used with this kit without requiring specific props from Playbook. The doc examples below showcase a few common usecases but are not a comprehensive list of all the functionalities possible.
2
4
 
3
5
  See the [highcharts API docs](https://api.highcharts.com/highcharts/) for a comprehensive look at what is possible.
@@ -1,5 +1,6 @@
1
1
  import React from "react";
2
- import { PbCircleChart, Title } from "playbook-ui";
2
+ import PbCircleChart from "../_pb_circle_chart";
3
+ import Title from "../../pb_title/_title";
3
4
 
4
5
  const data= [
5
6
  {
@@ -1,5 +1,6 @@
1
1
  import React from "react";
2
- import { PbCircleChart, colors } from "playbook-ui";
2
+ import PbCircleChart from "../_pb_circle_chart";
3
+ import colors from '../../tokens/exports/_colors.module.scss';
3
4
 
4
5
  const data= [
5
6
  {
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { PbCircleChart } from "playbook-ui";
2
+ import PbCircleChart from "../_pb_circle_chart";
3
3
 
4
4
  const data = [
5
5
  {
@@ -1,4 +1,5 @@
1
- Custom tooltip formatting is configured through the tooltip object in the options passed to the kit:
1
+ Tooltip options from Highcharts:
2
+
2
3
  `headerFormat` **Type**: String | when set to null will disable the header.
3
4
  `pointFormat` **Type**: String | defines the HTML template for each data point and supports custom HTML when `useHTML` is enabled.
4
5
  `useHTML` **Type**: boolean (default false) | enables HTML rendering in tooltips.
@@ -1,5 +1,6 @@
1
1
  import React from "react";
2
- import { PbCircleChart, Title } from "playbook-ui";
2
+ import PbCircleChart from "../_pb_circle_chart";
3
+ import Title from "../../pb_title/_title";
3
4
 
4
5
  const dataFirst = [
5
6
  {
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { PbCircleChart } from "playbook-ui";
2
+ import PbCircleChart from "../_pb_circle_chart";
3
3
 
4
4
  const data = [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { PbCircleChart } from "playbook-ui";
2
+ import PbCircleChart from "../_pb_circle_chart";
3
3
 
4
4
  const data = [{
5
5
  name: 'Bugs',
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { PbCircleChart } from "playbook-ui";
2
+ import PbCircleChart from "../_pb_circle_chart";
3
3
 
4
4
  const chartOptions = {
5
5
  series: [
@@ -0,0 +1 @@
1
+ In order to use this kit, 'highcharts' and 'highcharts-react-official' must be installed in your repo.
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { PbCircleChart } from "playbook-ui";
2
+ import PbCircleChart from "../_pb_circle_chart";
3
3
 
4
4
  const dataFirst = [
5
5
  {
@@ -1,5 +1,6 @@
1
1
  import React, { useState } from "react";
2
- import { PbCircleChart, Button } from "playbook-ui";
2
+ import PbCircleChart from "../_pb_circle_chart";
3
+ import Button from "../../pb_button/_button";
3
4
 
4
5
  const chartData = [
5
6
  {
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { PbCircleChart } from "playbook-ui";
2
+ import PbCircleChart from "../_pb_circle_chart";
3
3
 
4
4
  const data= [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { PbCircleChart } from "playbook-ui";
2
+ import PbCircleChart from "../_pb_circle_chart";
3
3
 
4
4
  const data= [
5
5
  {
@@ -1,3 +1,5 @@
1
- This kit is a wrapper around the Highcharts library. It applies styling and default settings but does NOT ship Highcharts. In order to use this kit, 'highcharts' and 'highcharts-react-official' must be installed in your repo. Once done, any prop or functionality provided by Highcharts can be used with this kit without requiring specific props from Playbook. The doc examples below showcase a few common usecases but are not a comprehensive list of all the functionalities possible.
1
+ **In order to use this kit, 'highcharts' and 'highcharts-react-official' must be installed in your repo.**
2
+
3
+ This kit is a wrapper around the Highcharts library. It applies styling and default settings but does NOT ship Highcharts. Once 'highcharts' and 'highcharts-react-official are installed into your repo, any prop or functionality provided by Highcharts can be used with this kit without requiring specific props from Playbook. The doc examples below showcase a few common usecases but are not a comprehensive list of all the functionalities possible.
2
4
 
3
5
  See the [highcharts API docs](https://api.highcharts.com/highcharts/) for a comprehensive look at what is possible.
@@ -1,6 +1,6 @@
1
1
  import React from 'react'
2
2
  import PbGaugeChart from '../../pb_pb_gauge_chart/_pb_gauge_chart'
3
- import { colors } from 'playbook-ui'
3
+ import colors from '../../tokens/exports/_colors.module.scss'
4
4
 
5
5
  const data = [{ name: "Name", y: 67 }]
6
6
 
@@ -1,5 +1,5 @@
1
1
  Highcharts allows for any custom colors to be used. Custom data colors allow for color customization to match the needs of business requirements.
2
2
 
3
- For React, pass the prop `plotOptions.solidgauge.borderColor` with a Playbook token like `colors.` + `data_1 | data_2 | data_3 | data_4 | data_5 | data_6 | data_7 | data_8`. HEX colors are also available `eg: #CA0095`
3
+ For React, pass the option `plotOptions.solidgauge.borderColor` with a Playbook token like `colors.` + `data_1 | data_2 | data_3 | data_4 | data_5 | data_6 | data_7 | data_8`. HEX colors are also available `eg: #CA0095`
4
4
 
5
- For Rails, the prop `plotOptions.solidgauge.borderColor` can only be used with HEX values as shown.
5
+ For Rails, the option `plotOptions.solidgauge.borderColor` can only be used with HEX values as shown.
@@ -7,7 +7,8 @@ import Caption from '../../pb_caption/_caption'
7
7
  import Body from '../../pb_body/_body'
8
8
  import SectionSeparator from '../../pb_section_separator/_section_separator'
9
9
  import Title from '../../pb_title/_title'
10
- import { colors, typography } from 'playbook-ui'
10
+ import colors from '../../tokens/exports/_colors.module.scss'
11
+ import typography from '../../tokens/exports/_typography.module.scss'
11
12
 
12
13
  const data = [{ name: "Name", y: 10 }];
13
14
 
@@ -0,0 +1 @@
1
+ In order to use this kit, 'highcharts' and 'highcharts-react-official' must be installed in your repo.
@@ -1,6 +1,7 @@
1
1
  import React from 'react'
2
2
  import PbGaugeChart from '../../pb_pb_gauge_chart/_pb_gauge_chart'
3
- import { colors, typography } from 'playbook-ui'
3
+ import colors from '../../tokens/exports/_colors.module.scss'
4
+ import typography from '../../tokens/exports/_typography.module.scss'
4
5
 
5
6
  const data = [{ name: "Capacity", y: 75 }]
6
7
 
@@ -1,6 +1,7 @@
1
1
  import React from 'react'
2
2
  import PbGaugeChart from '../../pb_pb_gauge_chart/_pb_gauge_chart'
3
- import { colors, typography } from 'playbook-ui'
3
+ import colors from '../../tokens/exports/_colors.module.scss'
4
+ import typography from '../../tokens/exports/_typography.module.scss'
4
5
 
5
6
  const chartOptions = {
6
7
  title: {
@@ -1,6 +1,7 @@
1
1
  import React from 'react'
2
2
  import PbGaugeChart from '../../pb_pb_gauge_chart/_pb_gauge_chart'
3
- import { colors, typography } from 'playbook-ui'
3
+ import colors from '../../tokens/exports/_colors.module.scss'
4
+ import typography from '../../tokens/exports/_typography.module.scss'
4
5
 
5
6
  const data = [{ name: "Rating", y: 4.5 }]
6
7
 
@@ -1,6 +1,7 @@
1
1
  import React from 'react'
2
2
  import PbGaugeChart from '../../pb_pb_gauge_chart/_pb_gauge_chart'
3
- import { colors, typography } from 'playbook-ui'
3
+ import colors from '../../tokens/exports/_colors.module.scss'
4
+ import typography from '../../tokens/exports/_typography.module.scss'
4
5
 
5
6
 
6
7
  const data1 = [
@@ -1,3 +1,5 @@
1
- This kit is a wrapper around the Highcharts library. It applies styling and default settings but does NOT ship Highcharts. In order to use this kit, 'highcharts' and 'highcharts-react-official' must be installed in your repo. Once done, any prop or functionality provided by Highcharts can be used with this kit without requiring specific props from Playbook. The doc examples below showcase a few common usecases but are not a comprehensive list of all the functionalities possible.
1
+ **In order to use this kit, 'highcharts' and 'highcharts-react-official' must be installed in your repo.**
2
+
3
+ This kit is a wrapper around the Highcharts library. It applies styling and default settings but does NOT ship Highcharts. Once 'highcharts' and 'highcharts-react-official are installed into your repo, any prop or functionality provided by Highcharts can be used with this kit without requiring specific props from Playbook. The doc examples below showcase a few common usecases but are not a comprehensive list of all the functionalities possible.
2
4
 
3
5
  See the [highcharts API docs](https://api.highcharts.com/highcharts/) for a comprehensive look at what is possible.
@@ -1,6 +1,6 @@
1
1
  import React from 'react'
2
2
  import PbLineGraph from '../../pb_pb_line_graph/_pb_line_graph'
3
- import { colors } from 'playbook-ui'
3
+ import colors from '../../tokens/exports/_colors.module.scss'
4
4
 
5
5
  const data = [{
6
6
  name: 'Installation',
@@ -0,0 +1 @@
1
+ In order to use this kit, 'highcharts' and 'highcharts-react-official' must be installed in your repo.
@@ -37,7 +37,7 @@
37
37
  },
38
38
  } %>
39
39
 
40
- <%= pb_rails("title", props: {size: 4, text: "align | vertical_align", padding_top: "sm", padding_bottom: "sm"})%>
40
+ <%= pb_rails("title", props: {size: 4, text: "align | verticalAlign", padding_top: "sm", padding_bottom: "sm"})%>
41
41
  <%= pb_rails("pb_line_graph", props: {options: chartOptionsFirst}) %>
42
42
 
43
43
  <% chartOptionsSecond = {
@@ -1,5 +1,8 @@
1
1
  import React, { useState } from "react";
2
- import { PbReactPopover, CircleIconButton, Body, Flex } from "playbook-ui";
2
+ import PbReactPopover from "../_popover";
3
+ import Body from "../../pb_body/_body";
4
+ import Flex from "../../pb_flex/_flex";
5
+ import CircleIconButton from "../../pb_circle_icon_button/_circle_icon_button";
3
6
 
4
7
  const PopoverAppendTo = (props) => {
5
8
  const [showParentPopover, setShowParentPopover] = useState(false);