playbook_ui 14.25.0.pre.alpha.PLAY2369textinputautocompleteprop9970 → 14.25.0.pre.alpha.PLAY2369textinputautocompleteprop10269

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 (226) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +0 -1
  3. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +6 -6
  4. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +1 -1
  5. data/app/pb_kits/playbook/pb_avatar/_avatar.scss +60 -65
  6. data/app/pb_kits/playbook/pb_avatar/avatar.test.js +1 -1
  7. data/app/pb_kits/playbook/pb_background/_background.scss +3 -3
  8. data/app/pb_kits/playbook/pb_badge/_badge.scss +135 -29
  9. data/app/pb_kits/playbook/pb_body/_body.scss +108 -35
  10. data/app/pb_kits/playbook/pb_body/_body_mixins.scss +1 -1
  11. data/app/pb_kits/playbook/pb_bread_crumbs/_bread_crumbs.scss +17 -30
  12. data/app/pb_kits/playbook/pb_button/_button.scss +39 -31
  13. data/app/pb_kits/playbook/pb_button/_button.tsx +12 -12
  14. data/app/pb_kits/playbook/pb_button/_button_mixins.scss +1 -1
  15. data/app/pb_kits/playbook/pb_button/button.rb +11 -18
  16. data/app/pb_kits/playbook/pb_button/button.test.js +3 -3
  17. data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar.scss +82 -73
  18. data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar_dark.scss +32 -33
  19. data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar_mixins.scss +1 -1
  20. data/app/pb_kits/playbook/pb_button_toolbar/button_toolbar.test.js +2 -2
  21. data/app/pb_kits/playbook/pb_caption/_caption.scss +100 -17
  22. data/app/pb_kits/playbook/pb_caption/_caption_mixin.scss +1 -8
  23. data/app/pb_kits/playbook/pb_card/_card.scss +116 -79
  24. data/app/pb_kits/playbook/pb_card/_card.tsx +26 -11
  25. data/app/pb_kits/playbook/pb_card/_card_mixin.scss +1 -1
  26. data/app/pb_kits/playbook/pb_card/card.rb +8 -7
  27. data/app/pb_kits/playbook/pb_card/card_header.rb +6 -2
  28. data/app/pb_kits/playbook/pb_card/docs/_card_header.html.erb +1 -1
  29. data/app/pb_kits/playbook/pb_checkbox/_checkbox.scss +11 -2
  30. data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.scss +7 -7
  31. data/app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.test.js +1 -1
  32. data/app/pb_kits/playbook/pb_collapsible/__snapshots__/collapsible.test.js.snap +1 -1
  33. data/app/pb_kits/playbook/pb_collapsible/_collapsible.scss +4 -4
  34. data/app/pb_kits/playbook/pb_copy_button/copy_button.test.jsx +1 -1
  35. data/app/pb_kits/playbook/pb_currency/_currency.scss +124 -39
  36. data/app/pb_kits/playbook/pb_dashboard_value/_dashboard_value.scss +16 -6
  37. data/app/pb_kits/playbook/pb_date/_date.scss +16 -18
  38. data/app/pb_kits/playbook/pb_date_picker/_date_picker.scss +1 -1
  39. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_inline_styles.scss +12 -12
  40. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_input_styles.scss +2 -2
  41. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_time_selection_styles.scss +6 -5
  42. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.scss +29 -23
  43. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.tsx +1 -1
  44. data/app/pb_kits/playbook/pb_date_range_stacked/_date_range_stacked.scss +1 -1
  45. data/app/pb_kits/playbook/pb_date_range_stacked/date_range_stacked.test.js +2 -2
  46. data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.scss +66 -26
  47. data/app/pb_kits/playbook/pb_date_stacked/date_stacked.rb +1 -1
  48. data/app/pb_kits/playbook/pb_date_stacked/date_stacked.test.js +2 -2
  49. data/app/pb_kits/playbook/pb_date_time/_date_time.scss +8 -15
  50. data/app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.scss +6 -7
  51. data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.scss +17 -14
  52. data/app/pb_kits/playbook/pb_date_year_stacked/date_year_stacked.test.js +1 -1
  53. data/app/pb_kits/playbook/pb_detail/_detail.scss +86 -21
  54. data/app/pb_kits/playbook/pb_dialog/_dialog.scss +330 -123
  55. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_loading.html.erb +16 -2
  56. data/app/pb_kits/playbook/pb_distribution_bar/_distribution_bar.scss +10 -7
  57. data/app/pb_kits/playbook/pb_draggable/draggable.test.jsx +1 -1
  58. data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +1 -1
  59. data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +6 -6
  60. data/app/pb_kits/playbook/pb_dropdown/index.js +3 -3
  61. data/app/pb_kits/playbook/pb_empty_state/_empty_state.scss +4 -4
  62. data/app/pb_kits/playbook/pb_file_upload/_file_upload.scss +20 -9
  63. data/app/pb_kits/playbook/pb_file_upload/file_upload.html.erb +1 -1
  64. data/app/pb_kits/playbook/pb_filter/_filter.scss +8 -8
  65. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.scss +65 -29
  66. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.tsx +1 -2
  67. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.test.js +1 -1
  68. data/app/pb_kits/playbook/pb_flex/_flex.scss +106 -100
  69. data/app/pb_kits/playbook/pb_flex/_flex.tsx +32 -25
  70. data/app/pb_kits/playbook/pb_flex/_flex_item.scss +146 -51
  71. data/app/pb_kits/playbook/pb_flex/_flex_item.tsx +19 -8
  72. data/app/pb_kits/playbook/pb_flex/flex.rb +16 -16
  73. data/app/pb_kits/playbook/pb_flex/flex_item.rb +6 -6
  74. data/app/pb_kits/playbook/pb_form_group/_form_group.scss +1 -1
  75. data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +381 -344
  76. data/app/pb_kits/playbook/pb_form_pill/_form_pill.test.jsx +4 -4
  77. data/app/pb_kits/playbook/pb_form_pill/_form_pill.tsx +8 -7
  78. data/app/pb_kits/playbook/pb_form_pill/form_pill.rb +9 -2
  79. data/app/pb_kits/playbook/pb_gauge/_gauge.scss +5 -5
  80. data/app/pb_kits/playbook/pb_hashtag/_hashtag.scss +1 -1
  81. data/app/pb_kits/playbook/pb_highlight/_highlight.scss +1 -1
  82. data/app/pb_kits/playbook/pb_home_address_street/home_adress_street.test.js +2 -2
  83. data/app/pb_kits/playbook/pb_icon_button/_icon_button.scss +4 -4
  84. data/app/pb_kits/playbook/pb_icon_circle/_icon_circle.scss +40 -39
  85. data/app/pb_kits/playbook/pb_icon_circle/icon_circle.rb +1 -1
  86. data/app/pb_kits/playbook/pb_icon_stat_value/icon_stat_value.test.js +1 -1
  87. data/app/pb_kits/playbook/pb_icon_value/_icon_value.scss +16 -15
  88. data/app/pb_kits/playbook/pb_image/_image.scss +41 -36
  89. data/app/pb_kits/playbook/pb_label_pill/_label_pill.scss +1 -1
  90. data/app/pb_kits/playbook/pb_label_value/_label_value.scss +3 -2
  91. data/app/pb_kits/playbook/pb_label_value/label_value.test.js +2 -2
  92. data/app/pb_kits/playbook/pb_layout/_layout.scss +336 -305
  93. data/app/pb_kits/playbook/pb_layout/_layout.tsx +14 -11
  94. data/app/pb_kits/playbook/pb_layout/item.rb +1 -7
  95. data/app/pb_kits/playbook/pb_layout/layout.rb +16 -25
  96. data/app/pb_kits/playbook/pb_layout/layout.test.js +3 -3
  97. data/app/pb_kits/playbook/pb_legend/_legend.scss +66 -16
  98. data/app/pb_kits/playbook/pb_legend/legend.test.js +1 -1
  99. data/app/pb_kits/playbook/pb_lightbox/lightbox.scss +4 -4
  100. data/app/pb_kits/playbook/pb_lightbox/lightbox.test.jsx +1 -1
  101. data/app/pb_kits/playbook/pb_link/_link.scss +113 -19
  102. data/app/pb_kits/playbook/pb_list/_list.scss +1 -1
  103. data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.scss +13 -11
  104. data/app/pb_kits/playbook/pb_map/_map.scss +1 -1
  105. data/app/pb_kits/playbook/pb_map/docs/_map_default.jsx +1 -1
  106. data/app/pb_kits/playbook/pb_map/docs/_map_with_custom_button.jsx +1 -1
  107. data/app/pb_kits/playbook/pb_map/docs/_map_with_plugin.jsx +1 -1
  108. data/app/pb_kits/playbook/pb_message/_message.scss +21 -16
  109. data/app/pb_kits/playbook/pb_message/_message.tsx +1 -0
  110. data/app/pb_kits/playbook/pb_message/_message_mixins.scss +5 -12
  111. data/app/pb_kits/playbook/pb_message/message.html.erb +1 -1
  112. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.scss +6 -3
  113. data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.scss +16 -15
  114. data/app/pb_kits/playbook/pb_multiple_users_stacked/_multiple_users_stacked.scss +1 -1
  115. data/app/pb_kits/playbook/pb_nav/_bold_mixin.scss +1 -1
  116. data/app/pb_kits/playbook/pb_nav/_collapsible_nav.scss +1 -1
  117. data/app/pb_kits/playbook/pb_online_status/_online_status.scss +19 -15
  118. data/app/pb_kits/playbook/pb_online_status/_online_status.tsx +1 -1
  119. data/app/pb_kits/playbook/pb_online_status/online_status.rb +5 -4
  120. data/app/pb_kits/playbook/pb_online_status/online_status.test.js +2 -2
  121. data/app/pb_kits/playbook/pb_overlay/_overlay.scss +1 -1
  122. data/app/pb_kits/playbook/pb_overlay/overlay.rb +1 -1
  123. data/app/pb_kits/playbook/pb_passphrase/_passphrase.scss +5 -2
  124. data/app/pb_kits/playbook/pb_person/_person.scss +1 -1
  125. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.scss +1 -1
  126. data/app/pb_kits/playbook/pb_pill/_pill.scss +23 -21
  127. data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.scss +15 -13
  128. data/app/pb_kits/playbook/pb_progress_simple/_progress_simple.scss +108 -33
  129. data/app/pb_kits/playbook/pb_progress_step/_progress_step.scss +1 -1
  130. data/app/pb_kits/playbook/pb_radio/_radio.scss +71 -52
  131. data/app/pb_kits/playbook/pb_radio/_radio.tsx +1 -1
  132. data/app/pb_kits/playbook/pb_radio/docs/_radio_react_hook.jsx +0 -3
  133. data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.scss +4 -4
  134. data/app/pb_kits/playbook/pb_section_separator/_section_separator.scss +81 -70
  135. data/app/pb_kits/playbook/pb_section_separator/_section_separator.tsx +9 -1
  136. data/app/pb_kits/playbook/pb_section_separator/_section_separator_mixin.scss +1 -1
  137. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_color.jsx +3 -1
  138. data/app/pb_kits/playbook/pb_section_separator/section_separator.rb +7 -1
  139. data/app/pb_kits/playbook/pb_select/_select.scss +4 -4
  140. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +6 -2
  141. data/app/pb_kits/playbook/pb_selectable_card_icon/_selectable_card_icon.scss +17 -8
  142. data/app/pb_kits/playbook/pb_selectable_icon/_selectable_icon.scss +39 -29
  143. data/app/pb_kits/playbook/pb_selectable_list/_item.tsx +2 -0
  144. data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.scss +8 -11
  145. data/app/pb_kits/playbook/pb_selectable_list/selectable_list.test.js +2 -3
  146. data/app/pb_kits/playbook/pb_selectable_list/selectable_list_item.html.erb +2 -2
  147. data/app/pb_kits/playbook/pb_source/_source.scss +8 -8
  148. data/app/pb_kits/playbook/pb_star_rating/_star_rating.scss +1 -1
  149. data/app/pb_kits/playbook/pb_star_rating/star_rating.test.js +1 -1
  150. data/app/pb_kits/playbook/pb_stat_value/_stat_value.scss +2 -2
  151. data/app/pb_kits/playbook/pb_text_input/_text_input.scss +5 -5
  152. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_autocomplete.html.erb +41 -0
  153. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_autocomplete.jsx +80 -0
  154. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_autocomplete.md +1 -0
  155. data/app/pb_kits/playbook/pb_text_input/docs/example.yml +3 -0
  156. data/app/pb_kits/playbook/pb_text_input/docs/index.js +1 -0
  157. data/app/pb_kits/playbook/pb_textarea/_textarea.scss +6 -6
  158. data/app/pb_kits/playbook/pb_time/_time.scss +44 -17
  159. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.scss +44 -23
  160. data/app/pb_kits/playbook/pb_time_range_inline/time_range_inline.rb +1 -1
  161. data/app/pb_kits/playbook/pb_time_stacked/_time_stacked.scss +5 -8
  162. data/app/pb_kits/playbook/pb_timestamp/_timestamp.scss +16 -10
  163. data/app/pb_kits/playbook/pb_timestamp/_timestamp.tsx +1 -4
  164. data/app/pb_kits/playbook/pb_timestamp/timestamp.rb +1 -1
  165. data/app/pb_kits/playbook/pb_timestamp/timestamp.test.js +2 -2
  166. data/app/pb_kits/playbook/pb_title/_title.scss +44 -39
  167. data/app/pb_kits/playbook/pb_title/_title.tsx +17 -8
  168. data/app/pb_kits/playbook/pb_title/_title_mixin.scss +2 -2
  169. data/app/pb_kits/playbook/pb_title/title.rb +20 -10
  170. data/app/pb_kits/playbook/pb_title/title.test.js +4 -4
  171. data/app/pb_kits/playbook/pb_title_count/_title_count.scss +19 -8
  172. data/app/pb_kits/playbook/pb_title_detail/_title_detail.scss +10 -11
  173. data/app/pb_kits/playbook/pb_toggle/_toggle.scss +4 -1
  174. data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +3 -4
  175. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +1 -1
  176. data/app/pb_kits/playbook/pb_typeahead/_typeahead.test.jsx +3 -3
  177. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.html.erb +1 -1
  178. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.jsx +1 -1
  179. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_color.html.erb +1 -22
  180. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_color.jsx +1 -1
  181. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_without_pills.html.erb +2 -2
  182. data/app/pb_kits/playbook/pb_user/_user.scss +83 -33
  183. data/app/pb_kits/playbook/pb_user/user.test.js +1 -1
  184. data/app/pb_kits/playbook/pb_user_badge/_user_badge.scss +23 -8
  185. data/app/pb_kits/playbook/pb_weekday_stacked/_weekday_stacked.scss +10 -10
  186. data/app/pb_kits/playbook/pb_weekday_stacked/weekday_stacked.test.jsx +3 -3
  187. data/dist/chunks/{_line_graph-QVm2TVXJ.js → _line_graph-CTpWU06n.js} +1 -1
  188. data/dist/chunks/{_typeahead-DENY2KW9.js → _typeahead-DmVCLhQz.js} +1 -1
  189. data/dist/chunks/{_weekday_stacked-DOM5KkBF.js → _weekday_stacked-DvnT8mDi.js} +2 -2
  190. data/dist/chunks/vendor.js +1 -1
  191. data/dist/menu.yml +0 -6
  192. data/dist/playbook-doc.js +2 -2
  193. data/dist/playbook-rails-react-bindings.js +1 -1
  194. data/dist/playbook-rails.js +1 -1
  195. data/dist/playbook.css +1 -1
  196. data/lib/playbook/version.rb +1 -1
  197. metadata +8 -34
  198. data/app/pb_kits/playbook/pb_drawer/_close_icon.tsx +0 -25
  199. data/app/pb_kits/playbook/pb_drawer/_drawer.scss +0 -381
  200. data/app/pb_kits/playbook/pb_drawer/_drawer.tsx +0 -231
  201. data/app/pb_kits/playbook/pb_drawer/_drawer_context.tsx +0 -3
  202. data/app/pb_kits/playbook/pb_drawer/context.ts +0 -11
  203. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_behavior.html.erb +0 -8
  204. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_behavior.jsx +0 -41
  205. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_borders.html.erb +0 -33
  206. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_borders.jsx +0 -78
  207. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.html.erb +0 -3
  208. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.jsx +0 -26
  209. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_default.html.erb +0 -20
  210. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_default.jsx +0 -59
  211. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.html.erb +0 -24
  212. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.jsx +0 -61
  213. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.md +0 -24
  214. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.html.erb +0 -21
  215. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.jsx +0 -54
  216. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.md +0 -1
  217. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_sizes.html.erb +0 -49
  218. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_sizes.jsx +0 -99
  219. data/app/pb_kits/playbook/pb_drawer/docs/example.yml +0 -20
  220. data/app/pb_kits/playbook/pb_drawer/docs/index.js +0 -7
  221. data/app/pb_kits/playbook/pb_drawer/drawer.html.erb +0 -20
  222. data/app/pb_kits/playbook/pb_drawer/drawer.rb +0 -56
  223. data/app/pb_kits/playbook/pb_drawer/drawer.test.jsx +0 -81
  224. data/app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx +0 -60
  225. data/app/pb_kits/playbook/pb_drawer/hooks/useDrawerAnimation.tsx +0 -21
  226. data/app/pb_kits/playbook/pb_drawer/index.js +0 -257
@@ -2,7 +2,7 @@
2
2
  @import "../tokens/titles";
3
3
  @import "../tokens/colors";
4
4
 
5
- [class^="pb_text_input_kit"] {
5
+ .pb_text_input_kit {
6
6
  .pb_text_input_kit_label {
7
7
  margin-bottom: $space_xs;
8
8
  display: block;
@@ -76,7 +76,7 @@
76
76
  .text_input {
77
77
  border-color: $error_dark;
78
78
  }
79
- [class*=pb_body_kit_negative] {
79
+ .pb_body_kit_negative {
80
80
  color: $error_dark;
81
81
  }
82
82
  }
@@ -100,7 +100,7 @@
100
100
  }
101
101
  &.error {
102
102
  .text_input_wrapper {
103
- [class*="pb_body_kit"] {
103
+ .pb_body_kit_negative {
104
104
  margin-top: $space_xs / 2;
105
105
  }
106
106
  // The `:not` here prevents error styling from affecting the country search input in the Phone Number Input Kit.
@@ -174,9 +174,9 @@
174
174
  }
175
175
 
176
176
  .text_input_wrapper_add_on {
177
- & > [class^="pb_text_input_kit"]:not(:last-child) {
177
+ & > .pb_text_input_kit:not(:last-child) {
178
178
  .text_input_wrapper_add_on input,
179
- [class^="pb_text_input_kit"] .text_input_wrapper_add_on .text_input {
179
+ .pb_text_input_kit .text_input_wrapper_add_on .text_input {
180
180
  border-bottom-right-radius: 0;
181
181
  border-top-right-radius: 0;
182
182
  border-right-width: 0;
@@ -0,0 +1,41 @@
1
+ <%= pb_rails("text_input", props: {
2
+ autocomplete: false,
3
+ label: "autocomplete='off'",
4
+ name: "firstName",
5
+ placeholder: "Enter first name",
6
+ }) %>
7
+
8
+ <%= pb_rails("text_input", props: {
9
+ label: "no autocomplete attribute (let browser decide- basically 'on')",
10
+ name: "lastName",
11
+ placeholder: "Enter last name"
12
+ }) %>
13
+
14
+ <%= pb_rails("text_input", props: {
15
+ autocomplete: true,
16
+ label: "autocomplete='on'",
17
+ name: "phone",
18
+ type: "phone",
19
+ placeholder: "Enter phone number"
20
+ }) %>
21
+
22
+ <%= pb_rails("body", props: { margin_bottom: "sm" }) do %>
23
+ The following have the same autocomplete attributes (email), but have
24
+ different name attributes (email and emailAlt). Many browsers will
25
+ open autocomplete based on name attributes instead of autocomplete:
26
+ <% end %>
27
+
28
+ <%= pb_rails("text_input", props: {
29
+ autocomplete: "email",
30
+ label: "autocomplete='email' name='email'",
31
+ name: "email",
32
+ placeholder: "Enter email address"
33
+ }) %>
34
+
35
+ <%= pb_rails("text_input", props: {
36
+ autocomplete: "email",
37
+ label: "autocomplete='email' name='emailAlt'",
38
+ name: "emailAlt",
39
+ type: "email",
40
+ placeholder: "Enter email address"
41
+ }) %>
@@ -0,0 +1,80 @@
1
+ import React, { useState } from 'react'
2
+
3
+ import TextInput from '../../pb_text_input/_text_input'
4
+ import Body from '../../pb_body/_body'
5
+
6
+
7
+ const TextInputAutocomplete = (props) => {
8
+ const [formFields, setFormFields] = useState({
9
+ firstName: "",
10
+ lastName: "",
11
+ phone: "",
12
+ emailTest: "",
13
+ email: "",
14
+ });
15
+
16
+ const handleOnChangeFormField = ({ target }) => {
17
+ const { name, value } = target;
18
+ setFormFields({ ...formFields, [name]: value });
19
+ };
20
+
21
+ return (
22
+ <div>
23
+ <TextInput
24
+ autoComplete={false}
25
+ label="autocomplete='off'"
26
+ name="firstName"
27
+ onChange={handleOnChangeFormField}
28
+ placeholder="Enter first name"
29
+ value={formFields.firstName}
30
+ {...props}
31
+ />
32
+ <TextInput
33
+ label="no autocomplete attribute (let browser decide- basically 'on')"
34
+ name="lastName"
35
+ onChange={handleOnChangeFormField}
36
+ placeholder="Enter last name"
37
+ value={formFields.lastName}
38
+ {...props}
39
+ />
40
+ <TextInput
41
+ autoComplete
42
+ label="autocomplete='on'"
43
+ name="phone"
44
+ onChange={handleOnChangeFormField}
45
+ placeholder="Enter phone number"
46
+ type="phone"
47
+ value={formFields.phone}
48
+ {...props}
49
+ />
50
+ <Body marginBottom="sm">
51
+ The following have the same autocomplete attributes (email), but have
52
+ different name attributes (email and emailAlt). Many browsers will
53
+ open autocomplete based on name attributes instead of autocomplete:
54
+ </Body>
55
+ <TextInput
56
+ autoComplete="email"
57
+ label="autocomplete='email' name='email'"
58
+ name="email"
59
+ onChange={handleOnChangeFormField}
60
+ placeholder="Enter email address"
61
+ type="email"
62
+ value={formFields.email}
63
+ {...props}
64
+ />
65
+ <TextInput
66
+ autoComplete="email"
67
+ label="autocomplete='email' name='emailAlt'"
68
+ marginTop="sm"
69
+ name="emailTest"
70
+ onChange={handleOnChangeFormField}
71
+ placeholder="Enter email address"
72
+ type="email"
73
+ value={formFields.emailTest}
74
+ {...props}
75
+ />
76
+ </div>
77
+ );
78
+ };
79
+
80
+ export default TextInputAutocomplete;
@@ -0,0 +1 @@
1
+ Set this prop to `false` or `"off"` to remove autocomplete from text inputs. You can also set it to a string, but browsers will often defer to other attributes like `name`.
@@ -9,6 +9,8 @@ examples:
9
9
  - text_input_no_label: No Label
10
10
  - text_input_options: Input Options
11
11
  - text_input_mask: Mask
12
+ - text_input_autocomplete: Autocomplete
13
+
12
14
  react:
13
15
  - text_input_default: Default
14
16
  - text_input_error: With Error
@@ -19,6 +21,7 @@ examples:
19
21
  - text_input_no_label: No Label
20
22
  - text_input_mask: Mask
21
23
  - text_input_sanitize: Sanitized Masked Input
24
+ - text_input_autocomplete: Autocomplete
22
25
 
23
26
 
24
27
  swift:
@@ -7,3 +7,4 @@ export { default as TextInputInline } from './_text_input_inline.jsx'
7
7
  export { default as TextInputNoLabel } from './_text_input_no_label.jsx'
8
8
  export { default as TextInputMask } from './_text_input_mask.jsx'
9
9
  export { default as TextInputSanitize } from './_text_input_sanitize.jsx'
10
+ export { default as TextInputAutocomplete } from './_text_input_autocomplete.jsx'
@@ -3,11 +3,11 @@
3
3
  @import "../tokens/spacing";
4
4
  @import "../tokens/titles";
5
5
 
6
- [class^=pb_textarea_kit] {
6
+ .pb_textarea_kit {
7
7
  margin-bottom: $space_sm;
8
8
 
9
- [class^=pb_caption_kit] {
10
- margin-bottom: $space_xs;
9
+ .pb_caption_kit_md {
10
+ margin-bottom: $space_xs !important;
11
11
  display: block;
12
12
  }
13
13
  textarea::placeholder,
@@ -59,8 +59,8 @@
59
59
  }
60
60
 
61
61
  &.error {
62
- [class*=pb_body_kit] {
63
- margin-top: $space_xs / 2;
62
+ .pb_body_kit_negative {
63
+ margin-top: $space_xs / 2 !important;
64
64
  }
65
65
  textarea {
66
66
  border-color: $error;
@@ -81,4 +81,4 @@
81
81
  .pb_caption_kit_xs {
82
82
  text-align: right;
83
83
  }
84
- }
84
+ }
@@ -4,16 +4,20 @@
4
4
  @import "../pb_body/body";
5
5
  @import "../pb_caption/caption";
6
6
 
7
- [class^=pb_time_kit] {
8
- &[class*=_center] {
9
- text-align: center;
10
- }
11
-
12
- &[class*=_right] {
13
- text-align: right;
14
- }
7
+ .pb_time_kit,
8
+ .pb_time_kit_left,
9
+ .pb_time_kit_center,
10
+ .pb_time_kit_right,
11
+ .pb_time_kit_sm,
12
+ .pb_time_kit_md,
13
+ .pb_time_kit_left_sm,
14
+ .pb_time_kit_left_md,
15
+ .pb_time_kit_center_sm,
16
+ .pb_time_kit_center_md,
17
+ .pb_time_kit_right_sm,
18
+ .pb_time_kit_right_md {
15
19
 
16
- [class^=pb_time_timezone] {
20
+ .pb_time_timezone {
17
21
  color: $text_lt_light;
18
22
  font-weight: $bold;
19
23
 
@@ -21,13 +25,36 @@
21
25
  content: " ";
22
26
  }
23
27
  }
28
+ }
24
29
 
25
- &[class*=dark] {
26
- & * {
27
- @include caption_dark;
28
- }
29
- .pb_time {
30
- color: $text_dk_default;
31
- }
32
- }
30
+ .pb_time_kit_center,
31
+ .pb_time_kit_center_sm,
32
+ .pb_time_kit_center_md {
33
+ text-align: center;
34
+ }
35
+
36
+ .pb_time_kit_right,
37
+ .pb_time_kit_right_sm,
38
+ .pb_time_kit_right_md {
39
+ text-align: right;
33
40
  }
41
+
42
+ .pb_time_kit.dark,
43
+ .pb_time_kit_left.dark,
44
+ .pb_time_kit_center.dark,
45
+ .pb_time_kit_right.dark,
46
+ .pb_time_kit_sm.dark,
47
+ .pb_time_kit_md.dark,
48
+ .pb_time_kit_left_sm.dark,
49
+ .pb_time_kit_left_md.dark,
50
+ .pb_time_kit_center_sm.dark,
51
+ .pb_time_kit_center_md.dark,
52
+ .pb_time_kit_right_sm.dark,
53
+ .pb_time_kit_right_md.dark {
54
+ & * {
55
+ @include caption_dark;
56
+ }
57
+ .pb_time {
58
+ color: $text_dk_default;
59
+ }
60
+ }
@@ -1,35 +1,56 @@
1
1
 
2
- [class^=pb_time_range_inline_kit] {
3
- &[class*=_center] {
4
- & > [class^=pb_caption],
5
- & > [class^=pb_body] {
6
- text-align: center;
7
- }
8
- & > [class*=pb_time_range_inline_wrapper] {
9
- justify-content: center;
10
- }
11
- }
12
- &[class*=_right] {
13
- & > [class^=pb_caption],
14
- & > [class^=pb_body] {
15
- text-align: right;
16
- }
17
- & > [class*=pb_time_range_inline_wrapper] {
18
- justify-content: flex-end;
19
- }
20
- }
21
- [class^=pb_time_range_inline_wrapper] {
2
+ @import "../tokens/spacing";
3
+
4
+ // Base time range inline classes
5
+ .pb_time_range_inline_kit_left,
6
+ .pb_time_range_inline_kit_center,
7
+ .pb_time_range_inline_kit_right,
8
+ .pb_time_range_inline_kit_vertical {
9
+ .pb_time_range_inline_wrapper {
22
10
  display: flex;
23
11
  align-items: center;
24
- [class*=pb_time_range_inline_arrow] {
12
+ .pb_time_range_inline_arrow {
25
13
  margin-left: $space_xs/2;
26
14
  margin-right: $space_xs/2;
27
15
  }
28
- [class*=pb_time_range_inline_timezone] {
16
+ .pb_time_range_inline_timezone {
29
17
  margin-left: $space_xs/2;
30
18
  }
31
- [class*=pb_time_range_inline_icon] {
19
+ .pb_time_range_inline_icon {
32
20
  margin-right: $space_xs/2;
33
21
  }
34
22
  }
35
23
  }
24
+
25
+ // Center alignment
26
+ .pb_time_range_inline_kit_center {
27
+ & > .pb_caption_kit,
28
+ & > .pb_body_kit {
29
+ text-align: center;
30
+ }
31
+ & > .pb_time_range_inline_wrapper {
32
+ justify-content: center;
33
+ }
34
+ }
35
+
36
+ // Right alignment
37
+ .pb_time_range_inline_kit_right {
38
+ & > .pb_caption_kit,
39
+ & > .pb_body_kit {
40
+ text-align: right;
41
+ }
42
+ & > .pb_time_range_inline_wrapper {
43
+ justify-content: flex-end;
44
+ }
45
+ }
46
+
47
+ // Vertical alignment
48
+ .pb_time_range_inline_kit_vertical {
49
+ & > .pb_caption_kit,
50
+ & > .pb_body_kit {
51
+ text-align: center;
52
+ }
53
+ & > .pb_time_range_inline_wrapper {
54
+ justify-content: center;
55
+ }
56
+ }
@@ -16,7 +16,7 @@ module Playbook
16
16
  prop :timezone, default: false
17
17
 
18
18
  def classname
19
- generate_classname("pb_time_range_inline_kit", dark_class, alignment)
19
+ generate_classname("pb_time_range_inline_kit", alignment)
20
20
  end
21
21
 
22
22
  def format_start_time_string
@@ -2,15 +2,12 @@
2
2
  @import "../pb_caption/caption";
3
3
  @import "../tokens/colors";
4
4
 
5
- [class^=pb_time_stacked_kit] {
6
- &[class*=_center] {
7
- text-align: center;
8
- }
9
-
10
- &[class*=_right] {
11
- text-align: right;
12
- }
5
+ .pb_time_stacked_kit_center {
6
+ text-align: center;
7
+ }
13
8
 
9
+ .pb_time_stacked_kit_right {
10
+ text-align: right;
14
11
  }
15
12
 
16
13
  .time-spacing {
@@ -1,16 +1,22 @@
1
1
  @import "timestamp-mixins";
2
2
  @import "../tokens/colors";
3
3
 
4
- [class^=pb_timestamp_kit]{
4
+ .pb_timestamp_kit_left,
5
+ .pb_timestamp_kit_center,
6
+ .pb_timestamp_kit_right {
5
7
  @include pb_timestamp;
8
+ }
9
+
10
+ .pb_timestamp_kit_center {
11
+ text-align: center;
12
+ }
13
+
14
+ .pb_timestamp_kit_right {
15
+ text-align: right;
16
+ }
6
17
 
7
- &[class*=_center] {
8
- text-align: center;
9
- }
10
- &[class*=_right] {
11
- text-align: right;
12
- }
13
- &[class*=_dark] {
14
- color: $text_dk_default;
15
- }
18
+ .pb_timestamp_kit_left.dark,
19
+ .pb_timestamp_kit_center.dark,
20
+ .pb_timestamp_kit_right.dark {
21
+ color: $text_dk_default;
16
22
  }
@@ -49,10 +49,7 @@ const Timestamp = (props: TimestampProps): React.ReactElement => {
49
49
  const dataProps = buildDataProps(data)
50
50
  const htmlProps = buildHtmlProps(htmlOptions)
51
51
  const classes = classnames(
52
- buildCss('pb_timestamp_kit', align, {
53
- dark: dark,
54
- variant: variant,
55
- }),
52
+ buildCss('pb_timestamp_kit', align),
56
53
  globalProps(props),
57
54
  className
58
55
  )
@@ -40,7 +40,7 @@ module Playbook
40
40
  SECS_PER_CENT = 100 * SECS_PER_YEAR # 3,153,600,000 seconds
41
41
 
42
42
  def classname
43
- generate_classname("pb_timestamp_kit", variant_class, align)
43
+ generate_classname("pb_timestamp_kit", align)
44
44
  end
45
45
 
46
46
  def timestamp_text
@@ -36,7 +36,7 @@ describe("Timestamp Kit", () => {
36
36
  );
37
37
 
38
38
  const kit = screen.getByTestId(testId);
39
- expect(kit).toHaveClass("pb_timestamp_kit_left_variant");
39
+ expect(kit).toHaveClass("pb_timestamp_kit_left");
40
40
  });
41
41
 
42
42
  test("renders Timestamp time", () => {
@@ -79,7 +79,7 @@ describe("Timestamp Kit", () => {
79
79
  );
80
80
 
81
81
  const kit = screen.getByTestId(testId);
82
- expect(kit).toHaveClass("pb_timestamp_kit_center_variant");
82
+ expect(kit).toHaveClass("pb_timestamp_kit_center");
83
83
  });
84
84
 
85
85
  test("renders Timestamp timezone", () => {
@@ -1,73 +1,78 @@
1
1
  @import "../tokens/titles";
2
2
  @import "../tokens/colors";
3
+ @import "../tokens/typography";
3
4
  @import "../tokens/screen_sizes";
4
5
  @import './title_mixin';
5
6
 
6
- [class^=pb_title_kit] {
7
- &[class*=_1] {
7
+ .pb_title_kit {
8
+ // Base title styles - default to title 3 styling
9
+ @include pb_title_3;
10
+ @include pb_title_bold;
11
+
12
+ // Size-based styles (these will override the base)
13
+ &.pb_title_1 {
8
14
  @include pb_title_1;
9
- @include title_colors;
10
15
  @include pb_title_bold;
11
16
  }
12
17
 
13
- &[class*=_2] {
18
+ &.pb_title_2 {
14
19
  @include pb_title_2;
15
- @include title_colors;
16
20
  @include pb_title_bold;
17
21
  }
18
22
 
19
- &[class*=_3] {
23
+ &.pb_title_3 {
20
24
  @include pb_title_3;
21
- @include title_colors;
22
25
  @include pb_title_bold;
23
26
  }
24
27
 
25
- &[class*=_4] {
28
+ &.pb_title_4 {
26
29
  @include pb_title_4;
27
- @include title_colors;
28
30
  }
29
31
 
30
- &[class*=_thin] {
32
+ &.pb_title_thin {
31
33
  @include pb_title_thin;
32
34
  }
33
35
 
34
- &[class*=_display] {
36
+ // Color classes
37
+ @include title_colors;
38
+
39
+ // Display sizes
40
+ &.pb_title_display {
35
41
  font-size: clamp(24px, calc(1.25vw + 5.3vw), 128px);
42
+ font-weight: $bold;
36
43
  }
37
44
 
38
- &[class*=_dynamic] {
39
- &[class*=_xs] {
40
- font-size: min(2vw, 80vw / 16);
41
- }
42
-
43
- &[class*=_sm] {
44
- font-size: min(2.5vw, 96vw / 16);
45
- }
46
-
47
- &[class*=_md] {
48
- font-size: min(4vw, 160vw / 16);
49
- }
50
-
51
- &[class*=_lg] {
52
- font-size: min(5vw, 192vw / 16);
53
- }
54
-
55
- &[class*=_xl] {
56
- font-size: min(6vw, 224vw / 16);
57
- }
58
-
59
- &[class*=_xxl] {
60
- font-size: min(8vw, 256vw / 16);
61
- }
45
+ // Dynamic sizes
46
+ &.pb_title_dynamic_xs {
47
+ font-size: min(2vw, 80vw / 16);
48
+ }
49
+
50
+ &.pb_title_dynamic_sm {
51
+ font-size: min(2.5vw, 96vw / 16);
52
+ }
53
+
54
+ &.pb_title_dynamic_md {
55
+ font-size: min(4vw, 160vw / 16);
62
56
  }
63
-
64
57
 
58
+ &.pb_title_dynamic_lg {
59
+ font-size: min(5vw, 192vw / 16);
60
+ }
61
+
62
+ &.pb_title_dynamic_xl {
63
+ font-size: min(6vw, 224vw / 16);
64
+ }
65
+
66
+ &.pb_title_dynamic_xxl {
67
+ font-size: min(8vw, 256vw / 16);
68
+ }
65
69
 
70
+ // Responsive breakpoint classes
66
71
  @each $size, $size_value in $breakpoints_grid {
67
72
  @for $title_size_value from 1 through 4 {
68
73
  $min_size: map-get($size_value, "min");
69
74
  $max_size: map-get($size_value, "max");
70
- &[class*=_#{$size}_#{$title_size_value}] {
75
+ &.pb_title_#{$size}_#{$title_size_value} {
71
76
  @include break_on($min_size, $max_size) {
72
77
  @if $title_size_value == 1 { @include pb_title_1; }
73
78
  @else if $title_size_value == 2 { @include pb_title_2; }
@@ -83,9 +88,9 @@
83
88
  &.dark {
84
89
  @include title_dark;
85
90
  @each $name, $color in $pb_dark_title_colors {
86
- &[class*="_#{$name}"] {
91
+ &.pb_title_#{$name} {
87
92
  color: $color;
88
93
  }
89
94
  }
90
95
  }
91
- }
96
+ }
@@ -43,32 +43,41 @@ const Title = (props: TitleProps): React.ReactElement => {
43
43
  const ariaProps: {[key: string]: string | number} = buildAriaProps(aria)
44
44
  const dataProps: {[key: string]: string | number} = buildDataProps(data)
45
45
  const htmlProps = buildHtmlProps(htmlOptions)
46
- const getBold = bold ? '' : 'thin'
47
46
  const isSizeNumberOrString = typeof size === "number" || typeof size === "string"
48
47
 
49
48
  const buildResponsiveSizeCss = () => {
50
- let css = ''
49
+ const classes: string[] = []
51
50
 
52
51
  if (!isSizeNumberOrString) {
53
52
  Object.entries(size).forEach((sizeObj) => {
54
- css += `pb_title_kit_${sizeObj[0]}_${sizeObj[1]} `
53
+ classes.push(`pb_title_${sizeObj[0]}_${sizeObj[1]}`)
55
54
  })
56
55
  }
57
56
 
58
- return css.trim()
57
+ return classes
59
58
  }
60
59
 
61
60
  const buildDisplaySize = () => {
62
61
  if (displaySize) {
63
- return `pb_title_kit_dynamic_${displaySize}`
62
+ return [`pb_title_dynamic_${displaySize}`]
64
63
  }
64
+ return []
65
65
  }
66
66
 
67
+ const titleClasses = ['pb_title_kit']
68
+
69
+ if (isSizeNumberOrString) {
70
+ titleClasses.push(`pb_title_${size}`)
71
+ }
72
+ if (variant) titleClasses.push(`pb_title_${variant}`)
73
+ if (color) titleClasses.push(`pb_title_${color}`)
74
+ if (!bold) titleClasses.push('pb_title_thin')
75
+ titleClasses.push(...buildDisplaySize())
76
+ titleClasses.push(...buildResponsiveSizeCss())
77
+
67
78
  const classes = classnames(
68
- buildCss('pb_title_kit', isSizeNumberOrString ? `size_${size}` : "", variant, color, getBold),
79
+ titleClasses.join(' '),
69
80
  globalProps(props),
70
- buildDisplaySize(),
71
- buildResponsiveSizeCss(),
72
81
  className
73
82
  )
74
83
  const Tag: React.ReactElement | any = `${tag}`
@@ -20,7 +20,7 @@ $pb_dark_title_colors: (
20
20
 
21
21
  @mixin title_colors {
22
22
  @each $name, $color in $pb_title_colors {
23
- &[class*=_#{$name}] {
23
+ &.pb_title_#{$name} {
24
24
  color: $color
25
25
  }
26
26
  }
@@ -28,4 +28,4 @@ $pb_dark_title_colors: (
28
28
 
29
29
  @mixin title_dark {
30
30
  color: $text_dk_default;
31
- }
31
+ }