playbook_ui 15.0.0.pre.alpha.PLAY2468phonenuminputvalidation10790 → 15.0.0.pre.alpha.PLAY2473rowhighlightfix10510

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 (136) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +0 -2
  3. data/app/pb_kits/playbook/pb_advanced_table/Components/RegularTableView.tsx +0 -12
  4. data/app/pb_kits/playbook/pb_advanced_table/Components/VirtualizedTableView.tsx +1 -1
  5. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +13 -67
  6. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_vertical_border.jsx +2 -2
  7. data/app/pb_kits/playbook/pb_card/_card.scss +4 -12
  8. data/app/pb_kits/playbook/pb_card/_card.tsx +3 -3
  9. data/app/pb_kits/playbook/pb_card/_card_mixin.scss +0 -10
  10. data/app/pb_kits/playbook/pb_card/docs/_card_highlight.html.erb +0 -3
  11. data/app/pb_kits/playbook/pb_card/docs/_card_highlight.jsx +0 -8
  12. data/app/pb_kits/playbook/pb_contact/_contact.tsx +0 -5
  13. data/app/pb_kits/playbook/pb_contact/contact.rb +0 -4
  14. data/app/pb_kits/playbook/pb_contact/contact.test.js +1 -21
  15. data/app/pb_kits/playbook/pb_contact/docs/_contact_default.html.erb +1 -16
  16. data/app/pb_kits/playbook/pb_contact/docs/_contact_default.jsx +0 -15
  17. data/app/pb_kits/playbook/pb_contact/docs/_contact_with_detail.html.erb +0 -6
  18. data/app/pb_kits/playbook/pb_contact/docs/_contact_with_detail.jsx +0 -6
  19. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -1
  20. data/app/pb_kits/playbook/pb_form/pb_form_validation.js +4 -19
  21. data/app/pb_kits/playbook/pb_icon_button/_icon_button.tsx +0 -1
  22. data/app/pb_kits/playbook/pb_icon_button/icon_button.html.erb +1 -2
  23. data/app/pb_kits/playbook/pb_nav/_item.tsx +5 -19
  24. data/app/pb_kits/playbook/pb_nav/_nav.scss +0 -27
  25. data/app/pb_kits/playbook/pb_nav/_nav.test.js +0 -16
  26. data/app/pb_kits/playbook/pb_nav/_nav.tsx +0 -5
  27. data/app/pb_kits/playbook/pb_nav/docs/example.yml +0 -2
  28. data/app/pb_kits/playbook/pb_nav/docs/index.js +1 -2
  29. data/app/pb_kits/playbook/pb_nav/item.html.erb +2 -6
  30. data/app/pb_kits/playbook/pb_nav/nav.rb +1 -6
  31. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_breached.html.erb +3 -3
  32. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_common.html.erb +3 -3
  33. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_confirmation.html.erb +3 -3
  34. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.html.erb +3 -3
  35. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_strength_change.html.erb +3 -3
  36. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +2 -43
  37. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_preview.html.erb +2 -2
  38. data/app/pb_kits/playbook/pb_section_separator/_section_separator.scss +5 -13
  39. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.html.erb +0 -23
  40. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.jsx +7 -45
  41. data/app/pb_kits/playbook/pb_section_separator/section_separator.html.erb +1 -4
  42. data/app/pb_kits/playbook/pb_timestamp/_timestamp.tsx +8 -24
  43. data/app/pb_kits/playbook/pb_timestamp/docs/_time_stamp_default.md +1 -0
  44. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_align.html.erb +10 -0
  45. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_align.jsx +9 -0
  46. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.html.erb +17 -3
  47. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.jsx +15 -0
  48. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.html.erb +2 -0
  49. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.jsx +2 -0
  50. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones.html.erb +14 -0
  51. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones.jsx +14 -0
  52. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_unstyled.html.erb +4 -0
  53. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_unstyled.jsx +4 -0
  54. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated.jsx +1 -0
  55. data/app/pb_kits/playbook/pb_timestamp/docs/example.yml +6 -18
  56. data/app/pb_kits/playbook/pb_timestamp/docs/index.js +0 -6
  57. data/app/pb_kits/playbook/pb_timestamp/timestamp.rb +7 -29
  58. data/app/pb_kits/playbook/pb_timestamp/timestamp.test.js +4 -69
  59. data/dist/chunks/{_line_graph-CspDMr9b.js → _line_graph-BBny-YYZ.js} +1 -1
  60. data/dist/chunks/{_typeahead-B_wpgm_J.js → _typeahead-CeyJ6-GF.js} +2 -2
  61. data/dist/chunks/{_weekday_stacked-CXzARuTy.js → _weekday_stacked-Dfq9Ls3V.js} +3 -3
  62. data/dist/chunks/{lib-QZuu1ltS.js → lib-BTs5acfO.js} +1 -1
  63. data/dist/chunks/pb_form_validation-CKkaQFX3.js +1 -0
  64. data/dist/chunks/vendor.js +1 -1
  65. data/dist/menu.yml +0 -6
  66. data/dist/playbook-doc.js +2 -2
  67. data/dist/playbook-rails-react-bindings.js +1 -1
  68. data/dist/playbook-rails.js +1 -1
  69. data/dist/playbook.css +1 -1
  70. data/lib/playbook/engine.rb +1 -0
  71. data/lib/playbook/forms/builder/form_field_builder.rb +1 -28
  72. data/lib/playbook/kit_base.rb +2 -23
  73. data/lib/playbook/version.rb +1 -1
  74. metadata +27 -73
  75. data/app/pb_kits/playbook/pb_contact/docs/_contact_default.md +0 -5
  76. data/app/pb_kits/playbook/pb_nav/docs/_horizontal_nav_extendedunderline.html.erb +0 -6
  77. data/app/pb_kits/playbook/pb_nav/docs/_horizontal_nav_extendedunderline.jsx +0 -39
  78. data/app/pb_kits/playbook/pb_nav/docs/_horizontal_nav_extendedunderline.md +0 -1
  79. data/app/pb_kits/playbook/pb_pb_circle_chart/_pb_circle_chart.scss +0 -3
  80. data/app/pb_kits/playbook/pb_pb_circle_chart/_pb_circle_chart.tsx +0 -62
  81. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_block_content.html.erb +0 -31
  82. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_block_content.jsx +0 -81
  83. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_color_overrides.html.erb +0 -25
  84. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_color_overrides.jsx +0 -40
  85. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_color_overrides.md +0 -5
  86. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_custom_tooltip.html.erb +0 -27
  87. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_custom_tooltip.jsx +0 -39
  88. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_custom_tooltip.md +0 -5
  89. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_legend_position.html.erb +0 -93
  90. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_legend_position.jsx +0 -131
  91. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_legend_position.md +0 -14
  92. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_with_labels.html.erb +0 -42
  93. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_with_labels.jsx +0 -58
  94. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_with_legend.html.erb +0 -24
  95. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_with_legend.jsx +0 -38
  96. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_default.html.erb +0 -22
  97. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_default.jsx +0 -33
  98. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_inner_sizes.html.erb +0 -118
  99. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_inner_sizes.jsx +0 -144
  100. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_live_data.jsx +0 -60
  101. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_rounded.html.erb +0 -24
  102. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_rounded.jsx +0 -42
  103. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_with_title.html.erb +0 -38
  104. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_with_title.jsx +0 -52
  105. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/example.yml +0 -29
  106. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/index.js +0 -11
  107. data/app/pb_kits/playbook/pb_pb_circle_chart/pbCircleChartTheme.ts +0 -88
  108. data/app/pb_kits/playbook/pb_pb_circle_chart/pb_circle_chart.html.erb +0 -1
  109. data/app/pb_kits/playbook/pb_pb_circle_chart/pb_circle_chart.rb +0 -28
  110. data/app/pb_kits/playbook/pb_pb_circle_chart/pb_circle_chart.test.jsx +0 -51
  111. data/app/pb_kits/playbook/pb_section_separator/section_separator.test.js +0 -165
  112. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_align.md +0 -1
  113. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.md +0 -1
  114. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.md +0 -5
  115. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_current_year.html.erb +0 -12
  116. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_current_year.jsx +0 -25
  117. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_current_year.md +0 -1
  118. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_date.html.erb +0 -4
  119. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_date.jsx +0 -17
  120. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_date.md +0 -1
  121. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_time.html.erb +0 -18
  122. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_time.jsx +0 -44
  123. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_time.md +0 -1
  124. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones.md +0 -1
  125. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated.md +0 -5
  126. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_current_year.html.erb +0 -16
  127. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_current_year.jsx +0 -30
  128. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_current_year.md +0 -1
  129. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_date.html.erb +0 -16
  130. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_date.jsx +0 -30
  131. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_date.md +0 -1
  132. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_time.html.erb +0 -26
  133. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_time.jsx +0 -41
  134. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_time.md +0 -1
  135. data/dist/chunks/componentRegistry-DzmmLR2x.js +0 -1
  136. data/dist/chunks/pb_form_validation-W63gNcnu.js +0 -1
@@ -48,30 +48,3 @@
48
48
  &:hover { cursor: pointer; }
49
49
  }
50
50
  }
51
-
52
- .pb_nav_extended_underline {
53
- position: relative;
54
-
55
- // Add full-width border using pseudo-element so as not to break the active item border
56
- &::after {
57
- content: '';
58
- position: absolute;
59
- bottom: 0;
60
- left: 0;
61
- right: 0;
62
- height: 3px;
63
- background-color: $border_light;
64
- z-index: 1;
65
- }
66
-
67
- .pb_nav_list_kit_item_active.pb_nav_list_item_link {
68
- position: relative;
69
- z-index: 2;
70
- }
71
-
72
- &.dark {
73
- &::after {
74
- background-color: rgba($white, $opacity_3);
75
- }
76
- }
77
- }
@@ -117,19 +117,3 @@ test('should change variant', () => {
117
117
  const kit = screen.getByTestId(navTestId)
118
118
  expect(kit).toHaveClass('pb_nav_list_subtle_vertical_highlight')
119
119
  })
120
-
121
- test('extendedUnderline should work as expected', () => {
122
- render(
123
- <NavDefault extendedUnderline
124
- orientation="horizontal"
125
- />
126
- )
127
- const kit = screen.getByTestId(navTestId)
128
- expect(kit).toHaveClass('pb_nav_extended_underline')
129
- })
130
-
131
- test('extendedUnderline should not be applied when orientation is vertical', () => {
132
- render(<NavDefault extendedUnderline />)
133
- const kit = screen.getByTestId(navTestId)
134
- expect(kit).not.toHaveClass('pb_nav_extended_underline')
135
- })
@@ -14,7 +14,6 @@ type NavProps = {
14
14
  className?: string | string[],
15
15
  data?: Record<string, unknown>,
16
16
  dark?: boolean,
17
- extendedUnderline?: boolean,
18
17
  highlight?: boolean,
19
18
  htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
20
19
  id?: string,
@@ -34,7 +33,6 @@ const Nav = (props: NavProps): React.ReactElement => {
34
33
  className,
35
34
  data = {},
36
35
  dark = false,
37
- extendedUnderline = false,
38
36
  highlight = true,
39
37
  htmlOptions = {},
40
38
  id,
@@ -54,9 +52,6 @@ const Nav = (props: NavProps): React.ReactElement => {
54
52
  highlight: highlight,
55
53
  borderless: borderless,
56
54
  }),
57
- // extended underline is only applicable for horizontal normal nav, should not
58
- // affect other variants or orientations
59
- variant === 'normal' && orientation === 'horizontal' && extendedUnderline && 'pb_nav_extended_underline',
60
55
  globalProps(props),
61
56
  className
62
57
  )
@@ -17,7 +17,6 @@ examples:
17
17
  - horizontal_nav: Horizontal Nav
18
18
  - subtle_horizontal_nav: Subtle Horizontal Nav
19
19
  - bold_horizontal_nav: Bold Horizontal Nav
20
- - horizontal_nav_extendedunderline: Horizontal Nav With Extended Underline
21
20
  - block_nav: Block
22
21
  - block_no_title_nav: Without Title
23
22
  - new_tab: Open in a New Tab
@@ -43,7 +42,6 @@ examples:
43
42
  - horizontal_nav: Horizontal Nav
44
43
  - subtle_horizontal_nav: Subtle Horizontal Nav
45
44
  - bold_horizontal_nav: Bold Horizontal Nav
46
- - horizontal_nav_extendedunderline: Horizontal Nav With Extended Underline
47
45
  - block_nav: Block
48
46
  - block_no_title_nav: Without Title
49
47
  - new_tab: Open in a New Tab
@@ -19,5 +19,4 @@ export { default as CollapsibleNavWithAllOptions} from "./_collapsible_nav_with_
19
19
  export { default as NavWithFontControl } from "./_nav_with_font_control.jsx"
20
20
  export { default as NavWithSpacingControl } from "./_nav_with_spacing_control.jsx"
21
21
  export { default as CollapsibleNavItemSpacing } from "./_collapsible_nav_item_spacing.jsx"
22
- export { default as CollapsibleNavNoIcon } from "./_collapsible_nav_no_icon.jsx"
23
- export { default as HorizontalNavExtendedunderline } from './_horizontal_nav_extendedunderline.jsx'
22
+ export { default as CollapsibleNavNoIcon } from "./_collapsible_nav_no_icon.jsx"
@@ -3,9 +3,7 @@
3
3
  <%= pb_rails("collapsible/collapsible_main", props: { name: "default-collapsible-nav", icon: object.collapsible_icons, size: "xs", dark: object.dark, classname:object.margin_classes }) do %>
4
4
  <%= pb_content_tag( object.tag,
5
5
  href: object.link && object.link,
6
- target: object.link && object.target,
7
- onkeydown: !object.link ? "if(event.key==='Enter'||event.key===' '){event.preventDefault(); this.click();}" : nil,
8
- tabindex: object.link ? nil : 0,
6
+ target: object.link && object.target
9
7
  ) do %>
10
8
  <% if object.image_url %>
11
9
  <%= pb_rails("image", props: { url: object.image_url, classname: "pb_nav_img_wrapper_collapsible" }) %>
@@ -25,9 +23,7 @@
25
23
  <% else %>
26
24
  <%= pb_content_tag( object.tag,
27
25
  href: object.link && object.link,
28
- target: object.link && object.target,
29
- onkeydown: !object.link ? "if(event.key==='Enter'||event.key===' '){event.preventDefault(); this.click();}" : nil,
30
- tabindex: object.link ? nil : 0,
26
+ target: object.link && object.target
31
27
  ) do %>
32
28
  <% if object.image_url %>
33
29
  <%= pb_rails("image", props: { url: object.image_url, classname: "pb_nav_img_wrapper" }) %>
@@ -14,10 +14,9 @@ module Playbook
14
14
  prop :highlight, type: Playbook::Props::Boolean, default: true
15
15
  prop :borderless, type: Playbook::Props::Boolean, default: false
16
16
  prop :tabbing, type: Playbook::Props::Boolean, default: false
17
- prop :extended_underline, type: Playbook::Props::Boolean, default: false
18
17
 
19
18
  def classname
20
- generate_classname("pb_nav_list", variant, orientation, highlight_class, borderless_class) + extended_underline_class
19
+ generate_classname("pb_nav_list", variant, orientation, highlight_class, borderless_class)
21
20
  end
22
21
 
23
22
  def data
@@ -35,10 +34,6 @@ module Playbook
35
34
  def borderless_class
36
35
  borderless ? "borderless" : nil
37
36
  end
38
-
39
- def extended_underline_class
40
- variant === "normal" && orientation === "horizontal" && extended_underline ? " pb_nav_extended_underline" : ""
41
- end
42
37
  end
43
38
  end
44
39
  end
@@ -4,8 +4,8 @@
4
4
 
5
5
  <%= pb_rails("caption", props: { size: 'xs', text: "hello", id: "caption_breached" }) %>
6
6
 
7
- <script>
8
- window.addEventListener("load", () => {
7
+ <%= javascript_tag do %>
8
+ window.addEventListener("DOMContentLoaded", () => {
9
9
 
10
10
  // variables for the kits you are targeting
11
11
  const passphrase = document.querySelector(".passphrase_breached").querySelector("input")
@@ -142,4 +142,4 @@
142
142
  });
143
143
 
144
144
  })
145
- </script>
145
+ <% end %>
@@ -10,8 +10,8 @@
10
10
  <%= pb_rails("caption", props: { size: 'xs', text: "hello", id: "caption_common" }) %>
11
11
 
12
12
 
13
- <script>
14
- window.addEventListener("load", () => {
13
+ <%= javascript_tag do %>
14
+ window.addEventListener("DOMContentLoaded", () => {
15
15
 
16
16
  const commonText = document.querySelector("#body_common")
17
17
 
@@ -133,4 +133,4 @@
133
133
  });
134
134
 
135
135
  })
136
- </script>
136
+ <% end %>
@@ -4,8 +4,8 @@
4
4
 
5
5
  <div id="match"> </div>
6
6
 
7
- <script>
8
- window.addEventListener("load", () => {
7
+ <%= javascript_tag do %>
8
+ window.addEventListener("DOMContentLoaded", () => {
9
9
 
10
10
  const useState = (defaultValue) => {
11
11
  let value = defaultValue;
@@ -48,4 +48,4 @@
48
48
 
49
49
  }
50
50
  })
51
- </script>
51
+ <% end %>
@@ -32,8 +32,8 @@
32
32
 
33
33
 
34
34
 
35
- <script>
36
- window.addEventListener("load", () => {
35
+ <%= javascript_tag do %>
36
+ window.addEventListener("DOMContentLoaded", () => {
37
37
 
38
38
 
39
39
  // variables for the passphrase kits you are targeting
@@ -320,4 +320,4 @@
320
320
 
321
321
 
322
322
  })
323
- </script>
323
+ <% end %>
@@ -7,8 +7,8 @@
7
7
  <%= pb_rails("text_input", props: { label: "Passphrase Strength", value: "0", disabled: true, id: "calc_strength_change" }) %>
8
8
 
9
9
 
10
- <script>
11
- window.addEventListener("load", () => {
10
+ <%= javascript_tag do %>
11
+ window.addEventListener("DOMContentLoaded", () => {
12
12
 
13
13
  // variables for the kits you are targeting
14
14
  const passphrase = document.querySelector(".passphrase_change").querySelector("input")
@@ -120,4 +120,4 @@
120
120
  });
121
121
 
122
122
  })
123
- </script>
123
+ <% end %>
@@ -110,41 +110,18 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.Ref<unknown>
110
110
 
111
111
  const inputRef = useRef<HTMLInputElement | null>(null)
112
112
  const itiRef = useRef<any>(null);
113
- const wrapperRef = useRef<HTMLDivElement | null>(null); // Add wrapper ref
114
113
  const [inputValue, setInputValue] = useState(value)
115
114
  const [error, setError] = useState(props.error)
116
115
  const [dropDownIsOpen, setDropDownIsOpen] = useState(false)
117
116
  const [selectedData, setSelectedData] = useState()
118
117
  const [hasTyped, setHasTyped] = useState(false)
119
118
 
120
- // Function to update validation state on the wrapper element
121
- // Only applies when input is required
122
- const updateValidationState = (hasError: boolean) => {
123
- if (wrapperRef.current && required) {
124
- if (hasError) {
125
- wrapperRef.current.classList.add('pb_phone_number_validation_error')
126
- wrapperRef.current.setAttribute('data-pb-phone-validation-error', 'true')
127
- } else {
128
- wrapperRef.current.classList.remove('pb_phone_number_validation_error')
129
- wrapperRef.current.removeAttribute('data-pb-phone-validation-error')
130
- }
131
- } else if (wrapperRef.current && !required) {
132
- // Always clear validation state if field is not required
133
- wrapperRef.current.classList.remove('pb_phone_number_validation_error')
134
- wrapperRef.current.removeAttribute('data-pb-phone-validation-error')
135
- }
136
- }
137
-
138
119
  useEffect(() => {
139
- const hasError = (error ?? '').length > 0
140
- if (hasError) {
120
+ if ((error ?? '').length > 0) {
141
121
  onValidate(false)
142
122
  } else {
143
123
  onValidate(true)
144
124
  }
145
-
146
- // Update validation state whenever error changes
147
- updateValidationState(hasError)
148
125
  }, [error, onValidate])
149
126
 
150
127
  /*
@@ -158,10 +135,6 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.Ref<unknown>
158
135
  setInputValue("")
159
136
  setError("")
160
137
  setHasTyped(false)
161
- // Only clear validation state if field was required
162
- if (required) {
163
- updateValidationState(false)
164
- }
165
138
  },
166
139
  inputNode() {
167
140
  return inputRef.current
@@ -239,21 +212,10 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.Ref<unknown>
239
212
  }
240
213
  }
241
214
 
242
- // Validation for required empty fields
243
- const validateRequiredField = () => {
244
- if (required && (!inputValue || inputValue.trim() === '')) {
245
- setError('Missing phone number')
246
- return true
247
- }
248
- return false
249
- }
250
215
 
251
216
  const validateErrors = () => {
252
217
  if (!hasTyped && !error) return
253
218
 
254
- // First check if required field is empty
255
- if (validateRequiredField()) return
256
-
257
219
  if (itiRef.current) isValid(itiRef.current.isValidNumber())
258
220
  if (validateOnlyNumbers(itiRef.current)) return
259
221
  if (validateTooLongNumber(itiRef.current)) return
@@ -348,10 +310,7 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.Ref<unknown>
348
310
  value: inputValue
349
311
  }
350
312
 
351
- let wrapperProps: Record<string, unknown> = {
352
- className: classes,
353
- ref: wrapperRef // Add ref to wrapper
354
- }
313
+ let wrapperProps: Record<string, unknown> = { className: classes }
355
314
 
356
315
  if (!isEmpty(aria)) textInputProps = {...textInputProps, ...ariaProps}
357
316
  if (!isEmpty(data)) wrapperProps = {...wrapperProps, ...dataProps}
@@ -13,8 +13,8 @@
13
13
  <script>
14
14
  document.addEventListener('DOMContentLoaded', () => {
15
15
  function handleButtonClick() {
16
- const editorContainer = [...document.querySelectorAll('[data-pb-react-props]')]
17
- .find(element => element.getAttribute('data-pb-react-props')?.includes('"id":"content-preview-editor"'))
16
+ const editorContainer = [...document.querySelectorAll('[data-react-props]')]
17
+ .find(element => element.getAttribute('data-react-props')?.includes('"id":"content-preview-editor"'))
18
18
 
19
19
  const editorElement = editorContainer?.querySelector('trix-editor')
20
20
  const inputId = editorElement?.getAttribute('input')
@@ -53,13 +53,10 @@ $section_colors_dark: (
53
53
  .pb_section_separator_vertical {
54
54
  margin-left: $space_xs;
55
55
  margin-right: $space_xs;
56
- flex-direction: column;
57
56
  &::before {
58
- flex: 1;
59
- @include section_separator_vertical(false);
57
+ display: none;
60
58
  }
61
59
  &::after {
62
- flex: 1;
63
60
  @include section_separator_vertical(false);
64
61
  }
65
62
  }
@@ -90,7 +87,7 @@ $section_colors_dark: (
90
87
  background: none;
91
88
  }
92
89
  &.pb_section_separator_vertical {
93
- &::before, &::after {
90
+ &::after {
94
91
  border: 1px dashed $color_value;
95
92
  background: none;
96
93
  }
@@ -109,7 +106,7 @@ $section_colors_dark: (
109
106
  }
110
107
 
111
108
  &.pb_section_separator_vertical {
112
- &::before, &::after {
109
+ &::after {
113
110
  @include section_separator_vertical(true);
114
111
  }
115
112
  }
@@ -118,11 +115,6 @@ $section_colors_dark: (
118
115
  &::before, &::after {
119
116
  @include section_separator_dashed(true);
120
117
  }
121
- &.pb_section_separator_vertical {
122
- &::before, &::after {
123
- @include section_separator_dashed(true);
124
- }
125
- }
126
118
  }
127
119
  }
128
120
 
@@ -134,7 +126,7 @@ $section_colors_dark: (
134
126
  }
135
127
 
136
128
  &.pb_section_separator_vertical {
137
- &::before, &::after {
129
+ &::after {
138
130
  @include section_separator_vertical(false);
139
131
  background: $color_value;
140
132
  }
@@ -146,7 +138,7 @@ $section_colors_dark: (
146
138
  background: none;
147
139
  }
148
140
  &.pb_section_separator_vertical {
149
- &::before, &::after {
141
+ &::after {
150
142
  border: 1px dashed $color_value;
151
143
  background: none;
152
144
  }
@@ -11,27 +11,4 @@
11
11
  padding_right: "xs"
12
12
  }) %>
13
13
  <% end %>
14
- <% end %>
15
-
16
- <%= pb_rails("flex", props: { classname: "flex-container", margin_top: "lg", vertical: "stretch" }) do %>
17
- <%= pb_rails("body", props: { classname: "flex-item" }) do %>
18
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua
19
- <% end %>
20
- <%= pb_rails("section_separator", props: { orientation: "vertical" }) do %>
21
- <%= pb_rails("card", props: {
22
- border_radius: "rounded",
23
- justify_content: "center",
24
- padding: "none"
25
- }) do %>
26
- <%= pb_rails("caption", props: {
27
- text: "TODAY",
28
- size: "xs",
29
- padding_left: "xs",
30
- padding_right: "xs"
31
- }) %>
32
- <% end %>
33
- <% end %>
34
- <%= pb_rails("body", props: { classname: "flex-item" }) do %>
35
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua
36
- <% end %>
37
14
  <% end %>
@@ -2,25 +2,8 @@ import React from 'react'
2
2
  import Card from '../../pb_card/_card'
3
3
  import Caption from '../../pb_caption/_caption'
4
4
  import SectionSeparator from '../../pb_section_separator/_section_separator'
5
- import Flex from '../../pb_flex/_flex'
6
- import FlexItem from '../../pb_flex/_flex_item'
7
5
 
8
- const childrenHorizontal = (
9
- <Card
10
- borderRadius="rounded"
11
- justifyContent="center"
12
- padding="none"
13
- >
14
- <Caption
15
- paddingLeft="xs"
16
- paddingRight="xs"
17
- size="xs"
18
- text="TODAY"
19
- />
20
- </Card>
21
- )
22
-
23
- const childrenVertical = (
6
+ const children = (
24
7
  <Card
25
8
  borderRadius="rounded"
26
9
  justifyContent="center"
@@ -37,33 +20,12 @@ const childrenVertical = (
37
20
 
38
21
  const SectionSeparatorChildren = (props) => {
39
22
  return (
40
- <>
41
- <SectionSeparator
42
- {...props}
43
- lineStyle='dashed'
44
- >
45
- {childrenHorizontal}
46
- </SectionSeparator>
47
- <Flex
48
- inline="flex-container"
49
- marginTop="lg"
50
- vertical="stretch"
51
- >
52
- <FlexItem>
53
- {'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua'}
54
- </FlexItem>
55
- <SectionSeparator
56
- orientation="vertical"
57
- {...props}
58
- >
59
- {childrenVertical}
60
- </SectionSeparator>
61
- <FlexItem>
62
- {'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua'}
63
- </FlexItem>
64
- </Flex>
65
- </>
66
-
23
+ <SectionSeparator
24
+ {...props}
25
+ lineStyle='dashed'
26
+ >
27
+ {children}
28
+ </SectionSeparator>
67
29
  )
68
30
  }
69
31
 
@@ -7,10 +7,7 @@
7
7
  <% end %>
8
8
  <% end %>
9
9
  <% if object.orientation === 'vertical' %>
10
- <% if content %>
11
- <%= content %>
12
- <% elsif object.text %>
13
- <span><%= pb_rails("caption", props: { text: object.text }) %></span>
10
+ <%= pb_rails("flex", props: { orientation: "column"}) do %>
14
11
  <% end %>
15
12
  <%end%>
16
13
  <% end %>
@@ -18,11 +18,9 @@ type TimestampProps = {
18
18
  timezone: string,
19
19
  htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
20
20
  id?: string,
21
- showCurrentYear?: boolean,
22
21
  showDate?: boolean,
23
22
  showUser?: boolean,
24
23
  hideUpdated?: boolean,
25
- showTime?: boolean,
26
24
  showTimezone?: boolean,
27
25
  unstyled?: boolean,
28
26
  variant?: "default" | "elapsed" | "updated"
@@ -39,11 +37,9 @@ const Timestamp = (props: TimestampProps): React.ReactElement => {
39
37
  text,
40
38
  timezone,
41
39
  timestamp,
42
- showCurrentYear = false,
43
40
  showDate = true,
44
41
  showUser = false,
45
42
  hideUpdated = false,
46
- showTime = true,
47
43
  showTimezone = false,
48
44
  unstyled = false,
49
45
  variant = 'default',
@@ -59,6 +55,7 @@ const Timestamp = (props: TimestampProps): React.ReactElement => {
59
55
  )
60
56
 
61
57
  const currentYear = new Date().getFullYear().toString()
58
+ const dateDisplay = `${DateTime.toMonth(timestamp, timezone)} ${DateTime.toDay(timestamp, timezone)}`
62
59
  const shouldShowUser = showUser == true && text.length > 0
63
60
  const shouldShowTimezone = showTimezone == true && timezone.length > 0
64
61
  const updatedText = hideUpdated ? "" : "Last updated"
@@ -73,26 +70,16 @@ const Timestamp = (props: TimestampProps): React.ReactElement => {
73
70
  return timeDisplay
74
71
  }
75
72
 
76
- const baseDateDisplay = () => {
77
- let display = `${DateTime.toMonth(timestamp, timezone)} ${DateTime.toDay(timestamp, timezone)}`
78
- if (DateTime.toYear(timestamp, timezone).toString() !== currentYear || showCurrentYear) {
79
- display = `${display}, ${DateTime.toYear(timestamp, timezone)}`
80
- }
81
- return display
82
- }
83
-
84
73
  const fullDateDisplay = () => {
85
- const fullDisplay = baseDateDisplay()
86
- return showTime ? `${fullDisplay} ${' \u00b7 '} ${fullTimeDisplay()}` : fullDisplay
74
+ let fullDisplay = `${DateTime.toMonth(timestamp, timezone)} ${DateTime.toDay(timestamp, timezone)}`
75
+ if (DateTime.toYear(timestamp, timezone).toString() !== currentYear) {
76
+ fullDisplay = `${fullDisplay}, ${DateTime.toYear(timestamp, timezone)}`
77
+ }
78
+ return `${fullDisplay} ${' \u00b7 '} ${fullTimeDisplay()}`
87
79
  }
88
80
 
89
81
  const formatUpdatedString = () => {
90
- const finalUpdatedString = []
91
- if (shouldShowUser) finalUpdatedString.push(`by ${text}`)
92
- if (showDate && !showTime) finalUpdatedString.push(`on ${baseDateDisplay()}`)
93
- if (showDate && showTime) finalUpdatedString.push(`on ${baseDateDisplay()} at ${timeDisplay}`)
94
- if (showTime && !showDate) finalUpdatedString.push(`at ${timeDisplay}`)
95
- return `Last updated ${finalUpdatedString.join(' ')}`
82
+ return `Last updated ${userDisplay} on ${dateDisplay} at ${timeDisplay}`
96
83
  }
97
84
 
98
85
  const formatElapsedString = () => {
@@ -106,10 +93,7 @@ const Timestamp = (props: TimestampProps): React.ReactElement => {
106
93
  case 'elapsed':
107
94
  return formatElapsedString()
108
95
  default:
109
- if (showDate && showTime) return timestamp ? fullDateDisplay() : text
110
- if (showDate && !showTime) return baseDateDisplay()
111
- if (!showDate && showTime) return fullTimeDisplay()
112
- return text
96
+ return showDate ? timestamp ? fullDateDisplay() : text : fullTimeDisplay()
113
97
  }
114
98
  }
115
99
 
@@ -0,0 +1 @@
1
+ Use these only to display status updates in areas that has a lot of data.
@@ -8,6 +8,7 @@
8
8
 
9
9
  <%= pb_rails("timestamp", props: {
10
10
  timestamp: DateTime.now,
11
+ show_date: true,
11
12
  align: "left"
12
13
  }) %>
13
14
 
@@ -15,6 +16,7 @@
15
16
 
16
17
  <%= pb_rails("timestamp", props: {
17
18
  timestamp: DateTime.now + 4.years,
19
+ show_date: true,
18
20
  align: "left"
19
21
  }) %>
20
22
 
@@ -22,6 +24,7 @@
22
24
 
23
25
  <%= pb_rails("timestamp", props: {
24
26
  timestamp: DateTime.now - 1.year,
27
+ show_date: true,
25
28
  align: "left"
26
29
  }) %>
27
30
 
@@ -37,6 +40,7 @@
37
40
 
38
41
  <%= pb_rails("timestamp", props: {
39
42
  timestamp: DateTime.now,
43
+ show_date: true,
40
44
  align: "center"
41
45
  }) %>
42
46
 
@@ -44,6 +48,7 @@
44
48
 
45
49
  <%= pb_rails("timestamp", props: {
46
50
  timestamp: DateTime.now + 4.years,
51
+ show_date: true,
47
52
  align: "center"
48
53
  }) %>
49
54
 
@@ -51,6 +56,7 @@
51
56
 
52
57
  <%= pb_rails("timestamp", props: {
53
58
  timestamp: DateTime.now - 1.year,
59
+ show_date: true,
54
60
  align: "center"
55
61
  }) %>
56
62
 
@@ -58,6 +64,7 @@
58
64
 
59
65
  <%= pb_rails("timestamp", props: {
60
66
  timestamp: DateTime.now,
67
+ show_date: false,
61
68
  align: "right"
62
69
  }) %>
63
70
 
@@ -65,6 +72,7 @@
65
72
 
66
73
  <%= pb_rails("timestamp", props: {
67
74
  timestamp: DateTime.now,
75
+ show_date: true,
68
76
  align: "right"
69
77
  }) %>
70
78
 
@@ -72,6 +80,7 @@
72
80
 
73
81
  <%= pb_rails("timestamp", props: {
74
82
  timestamp: DateTime.now + 4.years,
83
+ show_date: true,
75
84
  align: "right"
76
85
  }) %>
77
86
 
@@ -79,5 +88,6 @@
79
88
 
80
89
  <%= pb_rails("timestamp", props: {
81
90
  timestamp: DateTime.now - 1.year,
91
+ show_date: true,
82
92
  align: "right"
83
93
  }) %>