playbook_ui 16.1.0.pre.alpha.play264213818 → 16.1.0.pre.alpha.play273614090

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 (139) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/Components/RegularTableView.tsx +12 -2
  3. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +33 -0
  4. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_background_custom.jsx +71 -0
  5. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_background_custom.md +4 -0
  6. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +1 -0
  7. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +2 -1
  8. data/app/pb_kits/playbook/pb_card/docs/_card_light.html.erb +3 -35
  9. data/app/pb_kits/playbook/pb_checkbox/_checkbox.scss +1 -1
  10. data/app/pb_kits/playbook/pb_checkbox/_checkbox.tsx +17 -0
  11. data/app/pb_kits/playbook/pb_checkbox/checkbox.html.erb +10 -1
  12. data/app/pb_kits/playbook/pb_checkbox/checkbox.rb +2 -0
  13. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_required_indicator.html.erb +6 -0
  14. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_required_indicator.jsx +17 -0
  15. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_required_indicator.md +3 -0
  16. data/app/pb_kits/playbook/pb_checkbox/docs/example.yml +2 -0
  17. data/app/pb_kits/playbook/pb_checkbox/docs/index.js +1 -0
  18. data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +14 -5
  19. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default.md +1 -0
  20. data/app/pb_kits/playbook/pb_dialog/_dialog.scss +8 -6
  21. data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +6 -0
  22. data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +83 -13
  23. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_blank_selection_rails.md +3 -0
  24. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_blank_selection_react.md +3 -0
  25. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_clearable.html.erb +52 -0
  26. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_clearable.jsx +72 -0
  27. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_clearable.md +5 -0
  28. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height.jsx +33 -0
  29. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height_rails.html.erb +20 -0
  30. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height_rails.md +8 -0
  31. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height_react.md +8 -0
  32. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display_rails.html.erb +1 -1
  33. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_label.html.erb +6 -3
  34. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_label.jsx +1 -0
  35. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_label.md +3 -1
  36. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_placeholder.html.erb +9 -0
  37. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_placeholder.jsx +33 -0
  38. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_placeholder.md +3 -0
  39. data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +6 -0
  40. data/app/pb_kits/playbook/pb_dropdown/docs/index.js +4 -1
  41. data/app/pb_kits/playbook/pb_dropdown/dropdown.html.erb +12 -6
  42. data/app/pb_kits/playbook/pb_dropdown/dropdown.rb +15 -0
  43. data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +94 -0
  44. data/app/pb_kits/playbook/pb_dropdown/dropdown_container.rb +5 -1
  45. data/app/pb_kits/playbook/pb_dropdown/dropdown_trigger.html.erb +15 -10
  46. data/app/pb_kits/playbook/pb_dropdown/dropdown_trigger.rb +4 -0
  47. data/app/pb_kits/playbook/pb_dropdown/index.js +191 -83
  48. data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownContainer.tsx +3 -0
  49. data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownTrigger.tsx +18 -1
  50. data/app/pb_kits/playbook/pb_dropdown/utilities/clickOutsideHelper.tsx +6 -0
  51. data/app/pb_kits/playbook/pb_filter/Filter/SortMenu.tsx +1 -1
  52. data/app/pb_kits/playbook/pb_filter/docs/_filter_default.html.erb +2 -2
  53. data/app/pb_kits/playbook/pb_filter/docs/_filter_default.jsx +16 -9
  54. data/app/pb_kits/playbook/pb_filter/filter.rb +2 -2
  55. data/app/pb_kits/playbook/pb_form/docs/_form_with_required_indicator.html.erb +6 -2
  56. data/app/pb_kits/playbook/pb_form/pb_form_validation.js +9 -2
  57. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.html.erb +5 -5
  58. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.jsx +4 -4
  59. data/app/pb_kits/playbook/pb_form_pill/form_pill.rb +4 -0
  60. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.scss +7 -0
  61. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +638 -549
  62. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_label.html.erb +3 -3
  63. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_label.jsx +4 -7
  64. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_label.md +3 -0
  65. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.test.jsx +4 -4
  66. data/app/pb_kits/playbook/pb_passphrase/_passphrase.tsx +40 -7
  67. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.jsx +1 -0
  68. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_required_indicator.html.erb +7 -0
  69. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_required_indicator.jsx +24 -0
  70. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_required_indicator.md +3 -0
  71. data/app/pb_kits/playbook/pb_passphrase/docs/example.yml +2 -0
  72. data/app/pb_kits/playbook/pb_passphrase/docs/index.js +1 -0
  73. data/app/pb_kits/playbook/pb_passphrase/passphrase.rb +2 -0
  74. data/app/pb_kits/playbook/pb_passphrase/passphrase.test.jsx +30 -1
  75. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +3 -0
  76. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_required_indicator.html.erb +5 -0
  77. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_required_indicator.jsx +14 -0
  78. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_required_indicator.md +3 -0
  79. data/app/pb_kits/playbook/pb_phone_number_input/docs/example.yml +2 -0
  80. data/app/pb_kits/playbook/pb_phone_number_input/docs/index.js +1 -0
  81. data/app/pb_kits/playbook/pb_phone_number_input/phone_number_input.rb +3 -0
  82. data/app/pb_kits/playbook/pb_phone_number_input/phone_number_input.test.js +34 -3
  83. data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.tsx +51 -16
  84. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_label.jsx +44 -0
  85. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_label.md +1 -0
  86. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_required_indicator.jsx +1 -0
  87. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_label.jsx +28 -0
  88. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_label.md +1 -0
  89. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.jsx +1 -0
  90. data/app/pb_kits/playbook/pb_rich_text_editor/docs/example.yml +2 -0
  91. data/app/pb_kits/playbook/pb_rich_text_editor/docs/index.js +2 -0
  92. data/app/pb_kits/playbook/pb_table/index.ts +29 -27
  93. data/app/pb_kits/playbook/pb_text_input/text_input.html.erb +10 -10
  94. data/app/pb_kits/playbook/pb_textarea/_textarea.tsx +10 -0
  95. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_default.html.erb +3 -3
  96. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_default.jsx +3 -0
  97. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_default.md +1 -0
  98. data/app/pb_kits/playbook/pb_textarea/textarea.html.erb +25 -9
  99. data/app/pb_kits/playbook/pb_textarea/textarea.rb +7 -1
  100. data/app/pb_kits/playbook/pb_time_picker/_time_picker.tsx +97 -11
  101. data/app/pb_kits/playbook/pb_time_picker/docs/_time_picker_on_handler.jsx +5 -2
  102. data/app/pb_kits/playbook/pb_time_picker/docs/_time_picker_required_indicator.html.erb +6 -0
  103. data/app/pb_kits/playbook/pb_time_picker/docs/_time_picker_required_indicator.jsx +16 -0
  104. data/app/pb_kits/playbook/pb_time_picker/docs/_time_picker_required_indicator.md +3 -0
  105. data/app/pb_kits/playbook/pb_time_picker/docs/example.yml +2 -0
  106. data/app/pb_kits/playbook/pb_time_picker/docs/index.js +1 -0
  107. data/app/pb_kits/playbook/pb_time_picker/time_picker.rb +3 -0
  108. data/app/pb_kits/playbook/pb_time_picker/time_picker.test.jsx +47 -1
  109. data/app/pb_kits/playbook/pb_typeahead/_typeahead.test.jsx +24 -1
  110. data/app/pb_kits/playbook/pb_typeahead/_typeahead.tsx +412 -324
  111. data/app/pb_kits/playbook/pb_typeahead/components/Control.tsx +2 -0
  112. data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.tsx +4 -1
  113. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_required_indicator.html.erb +16 -0
  114. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_required_indicator.jsx +23 -0
  115. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_required_indicator.md +3 -0
  116. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_truncated_text.html.erb +1 -1
  117. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_truncated_text.jsx +1 -1
  118. data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +2 -0
  119. data/app/pb_kits/playbook/pb_typeahead/docs/index.js +22 -21
  120. data/app/pb_kits/playbook/pb_typeahead/typeahead.html.erb +3 -2
  121. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +7 -1
  122. data/dist/chunks/{_pb_line_graph-BgKF_zz1.js → _pb_line_graph-DuJNCf7N.js} +1 -1
  123. data/dist/chunks/_typeahead-BKSzddAX.js +1 -0
  124. data/dist/chunks/{globalProps-BhVYCqRf.js → globalProps-Bc-FVsRt.js} +1 -1
  125. data/dist/chunks/lib-BwX82vim.js +29 -0
  126. data/dist/chunks/vendor.js +3 -3
  127. data/dist/menu.yml +2 -2
  128. data/dist/playbook-rails-react-bindings.js +1 -1
  129. data/dist/playbook-rails.js +1 -1
  130. data/dist/playbook.css +1 -1
  131. data/lib/playbook/forms/builder/form_field_builder.rb +1 -1
  132. data/lib/playbook/forms/builder/phone_number_field.rb +9 -0
  133. data/lib/playbook/forms/builder/typeahead_field.rb +15 -1
  134. data/lib/playbook/forms/builder.rb +2 -2
  135. data/lib/playbook/truncate.rb +1 -1
  136. data/lib/playbook/version.rb +1 -1
  137. metadata +42 -6
  138. data/dist/chunks/_typeahead-B9a6ZsEP.js +0 -1
  139. data/dist/chunks/lib-DD34ZrWL.js +0 -29
@@ -44,6 +44,9 @@ const DropdownTrigger = (props: DropdownTriggerProps) => {
44
44
 
45
45
  const {
46
46
  autocomplete,
47
+ clearable,
48
+ error,
49
+ errorId,
47
50
  filterItem,
48
51
  handleBackspace,
49
52
  handleChange,
@@ -52,8 +55,10 @@ const DropdownTrigger = (props: DropdownTriggerProps) => {
52
55
  inputWrapperRef,
53
56
  isDropDownClosed,
54
57
  isInputFocused,
58
+ label: contextLabel,
55
59
  multiSelect,
56
60
  selected,
61
+ selectId,
57
62
  setIsInputFocused,
58
63
  toggleDropdown,
59
64
  } = useContext(DropdownContext);
@@ -103,6 +108,10 @@ const DropdownTrigger = (props: DropdownTriggerProps) => {
103
108
  ? placeholder
104
109
  : "Select...";
105
110
 
111
+ const triggerAriaLabel = contextLabel
112
+ ? (children ? contextLabel : `${contextLabel}, ${defaultDisplayPlaceholder}`)
113
+ : undefined;
114
+
106
115
  return (
107
116
  <div {...ariaProps}
108
117
  {...dataProps}
@@ -113,6 +122,10 @@ const DropdownTrigger = (props: DropdownTriggerProps) => {
113
122
  {
114
123
  children ? (
115
124
  <div
125
+ aria-describedby={errorId}
126
+ aria-invalid={!!error}
127
+ aria-label={triggerAriaLabel}
128
+ id={selectId}
116
129
  onClick={() => toggleDropdown()}
117
130
  onKeyDown= {handleKeyDown}
118
131
  ref={inputWrapperRef}
@@ -129,6 +142,10 @@ const DropdownTrigger = (props: DropdownTriggerProps) => {
129
142
  className={triggerWrapperClasses}
130
143
  cursor={`${autocomplete ? "text" : "pointer"}`}
131
144
  htmlOptions={{
145
+ "aria-describedby": errorId,
146
+ "aria-invalid": !!error,
147
+ "aria-label": triggerAriaLabel,
148
+ id: selectId,
132
149
  onClick: () => handleWrapperClick(),
133
150
  onKeyDown: handleKeyDown,
134
151
  tabIndex: "0",
@@ -225,7 +242,7 @@ const DropdownTrigger = (props: DropdownTriggerProps) => {
225
242
  key={`${isDropDownClosed ? "chevron-down" : "chevron-up"}`}
226
243
  >
227
244
  {
228
- selectedArray.length > 0 && (
245
+ clearable !== false && selectedArray.length > 0 && (
229
246
  <div onClick={(e)=>{e.stopPropagation();handleBackspace()}}>
230
247
  <Icon
231
248
  cursor="pointer"
@@ -25,6 +25,12 @@ export const handleClickOutside =
25
25
  ) {
26
26
  shouldClose = false;
27
27
  }
28
+ // Target dropdown container to open dropdown
29
+ if (
30
+ targetElement.getAttribute("data-dropdown") === "pb-dropdown-label"
31
+ ) {
32
+ shouldClose = false;
33
+ }
28
34
  targetElement = targetElement.parentElement as HTMLElement;
29
35
  }
30
36
  if (
@@ -21,7 +21,7 @@ const nextValue = (value: SortValue[], name: string): SortValue => {
21
21
  }
22
22
 
23
23
  const directionIcon = (dir: Direction) => (
24
- dir == 'asc' ? 'sort-amount-up' : 'sort-amount-down'
24
+ dir == 'asc' ? 'arrow-up-short-wide' : 'arrow-down-wide-short'
25
25
  )
26
26
 
27
27
  const renderOptions = (options: SortOptions, value: SortValue[], handleChange: (arg0: SortValue) => void) => (
@@ -1,7 +1,7 @@
1
1
  <%=
2
2
  pb_rails("filter", props: {
3
3
  min_width: "360px",
4
- id: "1",
4
+ id: "filter-demo-1",
5
5
  margin_bottom: "xl",
6
6
  filters: [
7
7
  { name: "name", value: "John Wick" },
@@ -44,7 +44,7 @@
44
44
  <%=
45
45
  pb_rails("filter", props: {
46
46
  min_width: "360px",
47
- id: "def2",
47
+ id: "filter-demo-2",
48
48
  sort_menu: [
49
49
  { item: "Popularity", link: "?q[sorts]=managers_popularity+asc", active: true, direction: "desc" },
50
50
  { item: "Mananger's Title", link: "?q[sorts]=managers_title+asc", active: false },
@@ -1,4 +1,4 @@
1
- import React from 'react'
1
+ import React, { useState } from 'react'
2
2
 
3
3
  import Button from '../../pb_button/_button'
4
4
  import Filter from '../../pb_filter/_filter'
@@ -6,11 +6,18 @@ import Flex from '../../pb_flex/_flex'
6
6
  import Select from '../../pb_select/_select'
7
7
  import TextInput from '../../pb_text_input/_text_input'
8
8
 
9
- const SortingChangeCallback = (sortOptions) => {
10
- alert(JSON.stringify(sortOptions[0]))
11
- }
12
-
13
9
  const FilterDefault = (props) => {
10
+ const [sortValue, setSortValue] = useState([{ name: 'popularity', dir: 'desc' }])
11
+ const [sortValue2, setSortValue2] = useState([{ name: 'popularity', dir: 'desc' }])
12
+
13
+ const handleSortChange = (sortOptions) => {
14
+ setSortValue(sortOptions)
15
+ alert(JSON.stringify(sortOptions[0]))
16
+ }
17
+
18
+ const handleSortChange2 = (sortOptions) => {
19
+ setSortValue2(sortOptions)
20
+ }
14
21
  const options = [
15
22
  { value: 'USA' },
16
23
  { value: 'Canada' },
@@ -29,7 +36,7 @@ const FilterDefault = (props) => {
29
36
  }}
30
37
  marginBottom="xl"
31
38
  minWidth="375px"
32
- onSortChange={SortingChangeCallback}
39
+ onSortChange={handleSortChange}
33
40
  results={1}
34
41
  sortOptions={{
35
42
  popularity: 'Popularity',
@@ -38,7 +45,7 @@ const FilterDefault = (props) => {
38
45
  // eslint-disable-next-line
39
46
  manager_name: 'Manager\'s Name',
40
47
  }}
41
- sortValue={[{ name: 'popularity', dir: 'desc' }]}
48
+ sortValue={sortValue}
42
49
  {...props}
43
50
  >
44
51
  {({ closePopover }) => (
@@ -82,7 +89,7 @@ const FilterDefault = (props) => {
82
89
  <Filter
83
90
  double
84
91
  minWidth="375px"
85
- onSortChange={SortingChangeCallback}
92
+ onSortChange={handleSortChange2}
86
93
  results={0}
87
94
  sortOptions={{
88
95
  popularity: 'Popularity',
@@ -91,7 +98,7 @@ const FilterDefault = (props) => {
91
98
  // eslint-disable-next-line
92
99
  manager_name: 'Manager\'s Name',
93
100
  }}
94
- sortValue={[{ name: 'popularity', dir: 'desc' }]}
101
+ sortValue={sortValue2}
95
102
  {...props}
96
103
  >
97
104
  {({ closePopover }) => (
@@ -44,9 +44,9 @@ module Playbook
44
44
  def sort_icon(direction)
45
45
  case direction
46
46
  when "asc"
47
- "sort-amount-up"
47
+ "arrow-up-short-wide"
48
48
  when "desc"
49
- "sort-amount-down"
49
+ "arrow-down-wide-short"
50
50
  else
51
51
  ""
52
52
  end
@@ -1,13 +1,17 @@
1
1
  <%= pb_form_with(scope: :example, url: "", method: :get, validate: true) do |form| %>
2
+ <%= form.typeahead :example_typeahead_field, props: { label: true, required: true, required_indicator: true } %>
2
3
  <%= form.text_field :example_text_field, props: { label: true, required: true, required_indicator: true } %>
3
4
  <%= form.text_field :example_text_field_2, props: { label: "Text Field Custom Label", required: true, required_indicator: true } %>
4
- <%= form.text_area :example_text_area, props: { label: true, required: true, required_indicator: true } %>
5
- <%= form.text_area :example_text_area_2, props: { label: "Textarea Custom Label", required: true, required_indicator: true } %>
5
+ <%= form.phone_number_field :example_phone_number_field, props: { label: true, required: true, required_indicator: true } %>
6
6
  <%= form.email_field :example_email_field, props: { label: true, required: true, required_indicator: true } %>
7
7
  <%= form.number_field :example_number_field, props: { label: true, required: true, required_indicator: true } %>
8
8
  <%= form.search_field :example_search_field, props: { label: true, required: true, required_indicator: true } %>
9
9
  <%= form.password_field :example_password_field, props: { label: true, required: true, required_indicator: true } %>
10
10
  <%= form.url_field :example_url_field, props: { label: true, required: true, required_indicator: true } %>
11
+ <%= form.text_area :example_text_area, props: { label: true, required: true, required_indicator: true } %>
12
+ <%= form.text_area :example_text_area_2, props: { label: "Textarea Custom Label", required: true, required_indicator: true } %>
13
+ <%# <%= form.check_box :example_checkbox, props: { label: true, text: "Checkbox Label", required: true, required_indicator: true } %>
14
+ <%= form.time_picker :example_time_picker_required_indicator, props: { label: true, required: true, required_indicator: true } %>
11
15
 
12
16
  <%= form.actions do |action| %>
13
17
  <%= action.submit %>
@@ -26,6 +26,10 @@ class PbFormValidation extends PbEnhancedElement {
26
26
  const isPhoneNumberInput = field.closest('.pb_phone_number_input')
27
27
  if (isPhoneNumberInput) return
28
28
 
29
+ // Skip TimePicker inputs - they handle their own validation
30
+ const isTimePickerInput = field.closest('.pb_time_picker')
31
+ if (isTimePickerInput) return
32
+
29
33
  FIELD_EVENTS.forEach((e) => {
30
34
  field.addEventListener(e, debounce((event) => {
31
35
  this.validateFormField(event)
@@ -67,13 +71,16 @@ class PbFormValidation extends PbEnhancedElement {
67
71
 
68
72
  // Check if this is a phone number input
69
73
  const isPhoneNumberInput = kitElement.classList.contains('pb_phone_number_input')
74
+
75
+ // Check if this is a TimePicker input
76
+ const isTimePickerInput = kitElement.classList.contains('pb_time_picker')
70
77
 
71
78
  // ensure clean error message state
72
79
  this.clearError(target)
73
80
  kitElement.classList.add('error')
74
81
 
75
- // Only add error message if it's NOT a phone number input
76
- if (!isPhoneNumberInput) {
82
+ // Only add error message if it's NOT a phone number input or TimePicker input
83
+ if (!isPhoneNumberInput && !isTimePickerInput) {
77
84
  // set the error message element
78
85
  const errorMessageContainer = this.errorMessageContainer
79
86
 
@@ -15,7 +15,7 @@
15
15
  options: names,
16
16
  label: "Truncation Within Typeahead",
17
17
  pills: true,
18
- truncate: 1,
18
+ truncate: "1",
19
19
  }) %>
20
20
 
21
21
  <%= pb_rails("caption", props: { text: "Form Pill Truncation" }) %>
@@ -24,19 +24,19 @@
24
24
  name: "Princess Amelia Mignonette Grimaldi Thermopolis Renaldo",
25
25
  avatar_url: "https://randomuser.me/api/portraits/women/44.jpg",
26
26
  tabindex: 0,
27
- truncate: 1,
27
+ truncate: "1",
28
28
  id: "truncation-1"
29
29
  }) %>
30
30
  <%= pb_rails("form_pill", props: {
31
31
  icon: "badge-check",
32
32
  text: "icon and a very long tag to show truncation",
33
33
  tabindex: 0,
34
- truncate: 1,
34
+ truncate: "1",
35
35
  id: "truncation-2"
36
36
  }) %>
37
37
  <%= pb_rails("form_pill", props: {
38
38
  text: "form pill long tag no tooltip show truncation",
39
39
  tabindex: 0,
40
- truncate: 1,
40
+ truncate: "1",
41
41
  }) %>
42
- <% end %>
42
+ <% end %>
@@ -21,7 +21,7 @@ const FormPillTruncatedText = (props) => {
21
21
  isMulti
22
22
  label="Truncation Within Typeahead"
23
23
  options={names}
24
- truncate={1}
24
+ truncate={"1"}
25
25
  {...props}
26
26
  />
27
27
  <Caption text="Form Pill Truncation"/>
@@ -31,20 +31,20 @@ const FormPillTruncatedText = (props) => {
31
31
  name="Princess Amelia Mignonette Grimaldi Thermopolis Renaldo"
32
32
  onClick={() => alert('Click!')}
33
33
  tabIndex={0}
34
- truncate={1}
34
+ truncate={"1"}
35
35
  />
36
36
  <FormPill
37
37
  icon="badge-check"
38
38
  onClick={() => {alert('Click!')}}
39
39
  tabIndex={0}
40
40
  text="icon and a very long tag to show truncation"
41
- truncate={1}
41
+ truncate={"1"}
42
42
  />
43
43
  <FormPill
44
44
  onClick={() => {alert('Click!')}}
45
45
  tabIndex={0}
46
46
  text="form pill with a very long tag to show truncation"
47
- truncate={1}
47
+ truncate={"1"}
48
48
  />
49
49
  </Card>
50
50
  </>
@@ -49,6 +49,10 @@ module Playbook
49
49
  def wrapped_class
50
50
  wrapped ? "wrapped" : nil
51
51
  end
52
+
53
+ def truncate_props
54
+ nil
55
+ end
52
56
  end
53
57
  end
54
58
  end
@@ -39,6 +39,13 @@
39
39
  display: flex;
40
40
  align-items: center;
41
41
  justify-content: space-between;
42
+ @include transition_default;
43
+
44
+ &:focus-within {
45
+ border-color: $primary;
46
+ background-color: $focus_input_light;
47
+ }
48
+
42
49
  .input_inner_container {
43
50
  width: 100%;
44
51
  }