playbook_ui 16.1.0.pre.alpha.play277814027 → 16.1.0.pre.rc.0

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 (178) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/Components/RegularTableView.tsx +2 -12
  3. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.html.erb +2 -2
  4. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.rb +0 -4
  5. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +0 -33
  6. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_inline_row_loading.md +2 -2
  7. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +0 -2
  8. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +1 -2
  9. data/app/pb_kits/playbook/pb_advanced_table/table_body.rb +1 -51
  10. data/app/pb_kits/playbook/pb_advanced_table/table_header.html.erb +1 -1
  11. data/app/pb_kits/playbook/pb_advanced_table/table_header.rb +0 -34
  12. data/app/pb_kits/playbook/pb_advanced_table/table_row.html.erb +1 -1
  13. data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +0 -19
  14. data/app/pb_kits/playbook/pb_background/docs/example.yml +0 -1
  15. data/app/pb_kits/playbook/pb_background/docs/index.js +0 -1
  16. data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +5 -14
  17. data/app/pb_kits/playbook/pb_dialog/_dialog.scss +6 -8
  18. data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +0 -6
  19. data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +2 -37
  20. data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +0 -6
  21. data/app/pb_kits/playbook/pb_dropdown/docs/index.js +1 -4
  22. data/app/pb_kits/playbook/pb_dropdown/dropdown.html.erb +2 -2
  23. data/app/pb_kits/playbook/pb_dropdown/dropdown.rb +0 -6
  24. data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +0 -94
  25. data/app/pb_kits/playbook/pb_dropdown/dropdown_container.rb +1 -5
  26. data/app/pb_kits/playbook/pb_dropdown/index.js +4 -59
  27. data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownContainer.tsx +0 -3
  28. data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownTrigger.tsx +1 -2
  29. data/app/pb_kits/playbook/pb_filter/Filter/SortMenu.tsx +1 -1
  30. data/app/pb_kits/playbook/pb_filter/docs/_filter_default.html.erb +2 -2
  31. data/app/pb_kits/playbook/pb_filter/docs/_filter_default.jsx +9 -16
  32. data/app/pb_kits/playbook/pb_filter/filter.rb +2 -2
  33. data/app/pb_kits/playbook/pb_form/docs/_form_with_required_indicator.html.erb +1 -5
  34. data/app/pb_kits/playbook/pb_form/pb_form_validation.js +2 -9
  35. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.html.erb +5 -5
  36. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.jsx +4 -4
  37. data/app/pb_kits/playbook/pb_form_pill/form_pill.rb +0 -4
  38. data/app/pb_kits/playbook/pb_icon/icon.rb +1 -6
  39. data/app/pb_kits/playbook/pb_multi_level_select/docs/example.yml +33 -35
  40. data/app/pb_kits/playbook/pb_multi_level_select/docs/index.js +0 -1
  41. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_with_tooltip.jsx +1 -1
  42. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_with_tooltip.md +1 -1
  43. data/app/pb_kits/playbook/pb_multiple_users/docs/example.yml +0 -1
  44. data/app/pb_kits/playbook/pb_multiple_users/multiple_users.html.erb +7 -51
  45. data/app/pb_kits/playbook/pb_multiple_users/multiple_users.rb +0 -1
  46. data/app/pb_kits/playbook/pb_passphrase/_passphrase.tsx +5 -20
  47. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.jsx +0 -1
  48. data/app/pb_kits/playbook/pb_passphrase/docs/example.yml +0 -2
  49. data/app/pb_kits/playbook/pb_passphrase/docs/index.js +0 -1
  50. data/app/pb_kits/playbook/pb_passphrase/passphrase.rb +0 -2
  51. data/app/pb_kits/playbook/pb_passphrase/passphrase.test.jsx +1 -30
  52. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +0 -3
  53. data/app/pb_kits/playbook/pb_phone_number_input/docs/example.yml +0 -2
  54. data/app/pb_kits/playbook/pb_phone_number_input/docs/index.js +0 -1
  55. data/app/pb_kits/playbook/pb_phone_number_input/phone_number_input.rb +0 -3
  56. data/app/pb_kits/playbook/pb_phone_number_input/phone_number_input.test.js +3 -34
  57. data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.tsx +6 -33
  58. data/app/pb_kits/playbook/pb_rich_text_editor/docs/example.yml +0 -3
  59. data/app/pb_kits/playbook/pb_rich_text_editor/docs/index.js +0 -2
  60. data/app/pb_kits/playbook/pb_rich_text_editor/rich_text_editor.rb +0 -5
  61. data/app/pb_kits/playbook/pb_rich_text_editor/rich_text_editor.test.js +18 -33
  62. data/app/pb_kits/playbook/pb_textarea/_textarea.tsx +11 -39
  63. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_default.html.erb +3 -3
  64. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_default.jsx +0 -3
  65. data/app/pb_kits/playbook/pb_textarea/docs/example.yml +1 -4
  66. data/app/pb_kits/playbook/pb_textarea/docs/index.js +0 -1
  67. data/app/pb_kits/playbook/pb_textarea/index.ts +5 -12
  68. data/app/pb_kits/playbook/pb_textarea/textarea.html.erb +14 -30
  69. data/app/pb_kits/playbook/pb_textarea/textarea.rb +0 -36
  70. data/app/pb_kits/playbook/pb_textarea/textarea.test.js +1 -18
  71. data/app/pb_kits/playbook/pb_time_picker/_time_picker.tsx +11 -97
  72. data/app/pb_kits/playbook/pb_time_picker/docs/_time_picker_on_handler.jsx +2 -5
  73. data/app/pb_kits/playbook/pb_time_picker/docs/example.yml +0 -2
  74. data/app/pb_kits/playbook/pb_time_picker/docs/index.js +0 -1
  75. data/app/pb_kits/playbook/pb_time_picker/time_picker.rb +0 -3
  76. data/app/pb_kits/playbook/pb_time_picker/time_picker.test.jsx +1 -47
  77. data/app/pb_kits/playbook/pb_typeahead/_typeahead.test.jsx +1 -24
  78. data/app/pb_kits/playbook/pb_typeahead/_typeahead.tsx +1 -2
  79. data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.tsx +1 -4
  80. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_truncated_text.html.erb +1 -1
  81. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_truncated_text.jsx +1 -1
  82. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +0 -4
  83. data/dist/chunks/{_pb_line_graph-BgKF_zz1.js → _pb_line_graph-hxi01lk7.js} +1 -1
  84. data/dist/chunks/_typeahead-BgLnlhzP.js +1 -0
  85. data/dist/chunks/{globalProps-BhVYCqRf.js → globalProps-DgYwLYNx.js} +1 -1
  86. data/dist/chunks/{lib-DD34ZrWL.js → lib-NLxTo8OB.js} +1 -1
  87. data/dist/chunks/vendor.js +3 -3
  88. data/dist/menu.yml +2 -2
  89. data/dist/playbook-rails-react-bindings.js +1 -1
  90. data/dist/playbook-rails.js +1 -1
  91. data/dist/playbook.css +1 -1
  92. data/lib/playbook/align_content.rb +3 -13
  93. data/lib/playbook/align_items.rb +3 -13
  94. data/lib/playbook/align_self.rb +3 -13
  95. data/lib/playbook/display.rb +0 -5
  96. data/lib/playbook/flex.rb +3 -13
  97. data/lib/playbook/flex_direction.rb +3 -13
  98. data/lib/playbook/flex_grow.rb +3 -13
  99. data/lib/playbook/flex_shrink.rb +3 -13
  100. data/lib/playbook/flex_wrap.rb +3 -13
  101. data/lib/playbook/forms/builder/phone_number_field.rb +0 -9
  102. data/lib/playbook/justify_content.rb +3 -13
  103. data/lib/playbook/justify_self.rb +3 -13
  104. data/lib/playbook/order.rb +3 -13
  105. data/lib/playbook/spacing.rb +9 -39
  106. data/lib/playbook/text_align.rb +3 -13
  107. data/lib/playbook/truncate.rb +1 -1
  108. data/lib/playbook/version.rb +2 -2
  109. data/lib/playbook/vertical_align.rb +3 -13
  110. data/lib/playbook/z_index.rb +0 -5
  111. metadata +6 -72
  112. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_background_custom.jsx +0 -71
  113. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_background_custom.md +0 -4
  114. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_inline_row_loading_rails.html.erb +0 -64
  115. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_inline_row_loading_rails.md +0 -18
  116. data/app/pb_kits/playbook/pb_background/docs/_background_responsive.jsx +0 -30
  117. data/app/pb_kits/playbook/pb_background/docs/_background_responsive.md +0 -1
  118. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default.md +0 -1
  119. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_blank_selection_rails.md +0 -3
  120. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_blank_selection_react.md +0 -3
  121. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_clearable.html.erb +0 -52
  122. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_clearable.jsx +0 -72
  123. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_clearable.md +0 -5
  124. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height.jsx +0 -33
  125. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height_rails.html.erb +0 -20
  126. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height_rails.md +0 -8
  127. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height_react.md +0 -8
  128. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_placeholder.html.erb +0 -9
  129. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_placeholder.jsx +0 -33
  130. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_placeholder.md +0 -3
  131. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_input_display.html.erb +0 -74
  132. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_input_display.jsx +0 -87
  133. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_input_display.md +0 -3
  134. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_with_tooltip.html.erb +0 -30
  135. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_required_indicator.html.erb +0 -7
  136. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_required_indicator.jsx +0 -24
  137. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_required_indicator.md +0 -3
  138. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_required_indicator.html.erb +0 -5
  139. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_required_indicator.jsx +0 -14
  140. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_required_indicator.md +0 -3
  141. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_required_indicator.jsx +0 -35
  142. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_required_indicator.md +0 -3
  143. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.html.erb +0 -10
  144. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.jsx +0 -21
  145. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.md +0 -3
  146. data/app/pb_kits/playbook/pb_table/docs/_sections.yml +0 -68
  147. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_default.md +0 -1
  148. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_input_options.html.erb +0 -39
  149. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_input_options.md +0 -3
  150. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_required_indicator.html.erb +0 -5
  151. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_required_indicator.jsx +0 -25
  152. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_required_indicator.md +0 -3
  153. data/app/pb_kits/playbook/pb_time_picker/docs/_time_picker_required_indicator.html.erb +0 -6
  154. data/app/pb_kits/playbook/pb_time_picker/docs/_time_picker_required_indicator.jsx +0 -16
  155. data/app/pb_kits/playbook/pb_time_picker/docs/_time_picker_required_indicator.md +0 -3
  156. data/app/pb_kits/playbook/utilities/test/globalProps/borderRadius.test.js +0 -33
  157. data/app/pb_kits/playbook/utilities/test/globalProps/bottom.test.js +0 -60
  158. data/app/pb_kits/playbook/utilities/test/globalProps/cursor.test.js +0 -42
  159. data/app/pb_kits/playbook/utilities/test/globalProps/dark.test.js +0 -33
  160. data/app/pb_kits/playbook/utilities/test/globalProps/gap.test.js +0 -87
  161. data/app/pb_kits/playbook/utilities/test/globalProps/globalProps.integration.test.js +0 -936
  162. data/app/pb_kits/playbook/utilities/test/globalProps/height.test.js +0 -68
  163. data/app/pb_kits/playbook/utilities/test/globalProps/htmlOptions.test.js +0 -510
  164. data/app/pb_kits/playbook/utilities/test/globalProps/left.test.js +0 -60
  165. data/app/pb_kits/playbook/utilities/test/globalProps/lineHeight.test.js +0 -33
  166. data/app/pb_kits/playbook/utilities/test/globalProps/margin.test.js +0 -95
  167. data/app/pb_kits/playbook/utilities/test/globalProps/numberSpacing.test.js +0 -33
  168. data/app/pb_kits/playbook/utilities/test/globalProps/overflow.test.js +0 -68
  169. data/app/pb_kits/playbook/utilities/test/globalProps/padding.test.js +0 -95
  170. data/app/pb_kits/playbook/utilities/test/globalProps/position.test.js +0 -33
  171. data/app/pb_kits/playbook/utilities/test/globalProps/right.test.js +0 -60
  172. data/app/pb_kits/playbook/utilities/test/globalProps/shadow.test.js +0 -33
  173. data/app/pb_kits/playbook/utilities/test/globalProps/textAlign.test.js +0 -41
  174. data/app/pb_kits/playbook/utilities/test/globalProps/top.test.js +0 -60
  175. data/app/pb_kits/playbook/utilities/test/globalProps/verticalAlign.test.js +0 -40
  176. data/app/pb_kits/playbook/utilities/test/globalProps/width.test.js +0 -66
  177. data/app/pb_kits/playbook/utilities/test/globalProps/zIndex.test.js +0 -50
  178. data/dist/chunks/_typeahead-CWA5wlah.js +0 -1
@@ -122,80 +122,6 @@ test('generated placeholder prop', () => {
122
122
 
123
123
  })
124
124
 
125
- test('placeholder prop passed directly to Dropdown', () => {
126
- render(
127
- <Dropdown
128
- data={{ testid: testId }}
129
- options={options}
130
- placeholder="Choose a country"
131
- />
132
- )
133
-
134
- const kit = screen.getByTestId(testId)
135
- const trigger = kit.querySelector('.pb_dropdown_trigger')
136
- expect(trigger).toHaveTextContent('Choose a country')
137
- })
138
-
139
- test('placeholder works with default variant', () => {
140
- render(
141
- <Dropdown
142
- data={{ testid: testId }}
143
- options={options}
144
- placeholder="Select an option"
145
- variant="default"
146
- />
147
- )
148
-
149
- const kit = screen.getByTestId(testId)
150
- const trigger = kit.querySelector('.pb_dropdown_trigger')
151
- expect(trigger).toHaveTextContent('Select an option')
152
- })
153
-
154
- test('placeholder works with subtle variant', () => {
155
- render(
156
- <Dropdown
157
- data={{ testid: testId }}
158
- options={options}
159
- placeholder="Pick an option"
160
- separators={false}
161
- variant="subtle"
162
- />
163
- )
164
-
165
- const kit = screen.getByTestId(testId)
166
- expect(kit).toHaveClass('pb_dropdown_subtle_separators_hidden')
167
- const trigger = kit.querySelector('.pb_dropdown_trigger')
168
- expect(trigger).toHaveTextContent('Pick an option')
169
- })
170
-
171
- test('placeholder works with quickpick variant', () => {
172
- render(
173
- <Dropdown
174
- data={{ testid: testId }}
175
- placeholder="Select a date range"
176
- variant="quickpick"
177
- />
178
- )
179
-
180
- const kit = screen.getByTestId(testId)
181
- expect(kit).toHaveClass('pb_dropdown_quickpick')
182
- const trigger = kit.querySelector('.pb_dropdown_trigger')
183
- expect(trigger).toHaveTextContent('Select a date range')
184
- })
185
-
186
- test('placeholder shows default "Select..." when not provided', () => {
187
- render(
188
- <Dropdown
189
- data={{ testid: testId }}
190
- options={options}
191
- />
192
- )
193
-
194
- const kit = screen.getByTestId(testId)
195
- const trigger = kit.querySelector('.pb_dropdown_trigger')
196
- expect(trigger).toHaveTextContent('Select...')
197
- })
198
-
199
125
  test('generated label prop', () => {
200
126
  render (
201
127
  <Dropdown
@@ -540,27 +466,7 @@ test("quickpick clears selection when clicking X icon", () => {
540
466
  expect(trigger).toHaveTextContent("Select...")
541
467
  })
542
468
 
543
- test("quickpick hides clear icon when clearable is false", () => {
544
- render(
545
- <Dropdown
546
- clearable={false}
547
- data={{ testid: testId }}
548
- defaultValue="This Week"
549
- variant="quickpick"
550
- />
551
- )
552
-
553
- const kit = screen.getByTestId(testId)
554
- const trigger = kit.querySelector('.pb_dropdown_trigger')
555
-
556
- expect(trigger).toHaveTextContent("This Week")
557
-
558
- const clearIcon = kit.querySelector('[aria-label="times icon"]')
559
- expect(clearIcon).not.toBeInTheDocument()
560
- })
561
-
562
469
  test("quickpick returns date array values when option selected", () => {
563
- // eslint-disable-next-line react/no-multi-comp
564
470
  const TestComponent = () => {
565
471
  const [selected, setSelected] = useState(null)
566
472
  return (
@@ -5,13 +5,9 @@ module Playbook
5
5
  class DropdownContainer < Playbook::KitBase
6
6
  prop :searchbar, type: Playbook::Props::Boolean,
7
7
  default: false
8
- prop :constrain_height, type: Playbook::Props::Boolean,
9
- default: false
10
8
 
11
9
  def classname
12
- classes = %w[pb_dropdown_container close]
13
- classes << "constrain_height" if constrain_height
14
- generate_classname(*classes, separator: " ")
10
+ generate_classname("pb_dropdown_container", "close", separator: " ")
15
11
  end
16
12
 
17
13
  def data
@@ -48,7 +48,6 @@ export default class PbDropdown extends PbEnhancedElement {
48
48
  this.updatePills();
49
49
 
50
50
  this.clearBtn = this.element.querySelector(CLEAR_ICON_SELECTOR);
51
- this.isClearable = this.element.dataset.pbDropdownClearable !== "false";
52
51
  if (this.clearBtn) {
53
52
  this.clearBtn.style.display = "none";
54
53
  this.clearBtn.addEventListener("click", (e) => {
@@ -61,10 +60,6 @@ export default class PbDropdown extends PbEnhancedElement {
61
60
 
62
61
  updateClearButton() {
63
62
  if (!this.clearBtn) return;
64
- if (!this.isClearable) {
65
- this.clearBtn.style.display = "none";
66
- return;
67
- }
68
63
  const hasSelection = this.isMultiSelect
69
64
  ? this.selectedOptions.size > 0
70
65
  : Boolean(this.element.querySelector(DROPDOWN_INPUT).value);
@@ -114,51 +109,15 @@ export default class PbDropdown extends PbEnhancedElement {
114
109
  adjustDropdownHeight() {
115
110
  if (this.target.classList.contains("open")) {
116
111
  const el = this.target;
117
- const shouldConstrain = el.classList.contains("constrain_height");
118
112
  el.style.height = "auto";
119
113
  requestAnimationFrame(() => {
120
- if (shouldConstrain) {
121
- // Calculate 18em in pixels (matches SCSS max-height: 18em)
122
- const fontSize = parseFloat(getComputedStyle(el).fontSize) || 16;
123
- const maxHeight = fontSize * 18;
124
- const scrollHeight = el.scrollHeight;
125
- const newHeight = Math.min(scrollHeight, maxHeight);
126
- el.offsetHeight; // force reflow
127
- el.style.height = newHeight + "px";
128
- } else {
129
- el.offsetHeight; // force reflow
130
- el.style.height = el.scrollHeight + "px";
131
- }
114
+ const newHeight = el.scrollHeight + "px";
115
+ el.offsetHeight; // force reflow
116
+ el.style.height = newHeight;
132
117
  });
133
118
  }
134
119
  }
135
120
 
136
- adjustDropdownPosition(container) {
137
- if (!container) return;
138
-
139
- const wrapper = this.element.querySelector(".dropdown_wrapper");
140
- if (!wrapper) return;
141
-
142
- const wrapperRect = wrapper.getBoundingClientRect();
143
- const h = container.getBoundingClientRect().height || container.scrollHeight;
144
- const spaceBelow = window.innerHeight - wrapperRect.bottom;
145
- const spaceAbove = wrapperRect.top;
146
-
147
- // If not enough space below but enough space above, position above
148
- if (spaceBelow < h + 10 && spaceAbove >= h + 10) {
149
- container.style.top = "auto";
150
- container.style.bottom = "calc(100% + 5px)";
151
- container.style.marginTop = "0";
152
- container.style.marginBottom = "0";
153
- } else {
154
- // Default: position below
155
- container.style.top = "";
156
- container.style.bottom = "";
157
- container.style.marginTop = "";
158
- container.style.marginBottom = "";
159
- }
160
- }
161
-
162
121
  handleSearch(term = "") {
163
122
  const lcTerm = term.toLowerCase();
164
123
  let hasMatch = false
@@ -406,21 +365,7 @@ export default class PbDropdown extends PbEnhancedElement {
406
365
  showElement(elem) {
407
366
  elem.classList.remove("close");
408
367
  elem.classList.add("open");
409
-
410
- const shouldConstrain = elem.classList.contains("constrain_height");
411
- if (shouldConstrain) {
412
- // Calculate height respecting max-height constraint (18em)
413
- const fontSize = parseFloat(getComputedStyle(elem).fontSize) || 16;
414
- const maxHeight = fontSize * 18; // matches SCSS max-height: 18em
415
- const scrollHeight = elem.scrollHeight;
416
- const height = Math.min(scrollHeight, maxHeight);
417
- elem.style.height = height + "px";
418
- } else {
419
- elem.style.height = elem.scrollHeight + "px";
420
- }
421
-
422
- // Auto-position dropdown above if not enough space below
423
- this.adjustDropdownPosition(elem);
368
+ elem.style.height = elem.scrollHeight + "px";
424
369
  }
425
370
 
426
371
  hideElement(elem) {
@@ -19,7 +19,6 @@ type DropdownContainerProps = {
19
19
  aria?: { [key: string]: string };
20
20
  children?: React.ReactChild[] | React.ReactChild;
21
21
  className?: string;
22
- constrainHeight?: boolean;
23
22
  dark?: boolean;
24
23
  data?: { [key: string]: string };
25
24
  htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
@@ -32,7 +31,6 @@ const DropdownContainer = (props: DropdownContainerProps) => {
32
31
  aria = {},
33
32
  children,
34
33
  className,
35
- constrainHeight = false,
36
34
  dark = false,
37
35
  data = {},
38
36
  htmlOptions = {},
@@ -56,7 +54,6 @@ const DropdownContainer = (props: DropdownContainerProps) => {
56
54
  const classes = classnames(
57
55
  buildCss("pb_dropdown_container"),
58
56
  `${isDropDownClosed ? "close" : "open"}`,
59
- constrainHeight && "constrain_height",
60
57
  globalProps(props),
61
58
  className
62
59
  );
@@ -44,7 +44,6 @@ const DropdownTrigger = (props: DropdownTriggerProps) => {
44
44
 
45
45
  const {
46
46
  autocomplete,
47
- clearable,
48
47
  filterItem,
49
48
  handleBackspace,
50
49
  handleChange,
@@ -226,7 +225,7 @@ const DropdownTrigger = (props: DropdownTriggerProps) => {
226
225
  key={`${isDropDownClosed ? "chevron-down" : "chevron-up"}`}
227
226
  >
228
227
  {
229
- clearable !== false && selectedArray.length > 0 && (
228
+ selectedArray.length > 0 && (
230
229
  <div onClick={(e)=>{e.stopPropagation();handleBackspace()}}>
231
230
  <Icon
232
231
  cursor="pointer"
@@ -21,7 +21,7 @@ const nextValue = (value: SortValue[], name: string): SortValue => {
21
21
  }
22
22
 
23
23
  const directionIcon = (dir: Direction) => (
24
- dir == 'asc' ? 'arrow-up-short-wide' : 'arrow-down-wide-short'
24
+ dir == 'asc' ? 'sort-amount-up' : 'sort-amount-down'
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: "filter-demo-1",
4
+ id: "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: "filter-demo-2",
47
+ id: "def2",
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, { useState } from 'react'
1
+ import React from 'react'
2
2
 
3
3
  import Button from '../../pb_button/_button'
4
4
  import Filter from '../../pb_filter/_filter'
@@ -6,18 +6,11 @@ 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 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
- }
9
+ const SortingChangeCallback = (sortOptions) => {
10
+ alert(JSON.stringify(sortOptions[0]))
11
+ }
17
12
 
18
- const handleSortChange2 = (sortOptions) => {
19
- setSortValue2(sortOptions)
20
- }
13
+ const FilterDefault = (props) => {
21
14
  const options = [
22
15
  { value: 'USA' },
23
16
  { value: 'Canada' },
@@ -36,7 +29,7 @@ const FilterDefault = (props) => {
36
29
  }}
37
30
  marginBottom="xl"
38
31
  minWidth="375px"
39
- onSortChange={handleSortChange}
32
+ onSortChange={SortingChangeCallback}
40
33
  results={1}
41
34
  sortOptions={{
42
35
  popularity: 'Popularity',
@@ -45,7 +38,7 @@ const FilterDefault = (props) => {
45
38
  // eslint-disable-next-line
46
39
  manager_name: 'Manager\'s Name',
47
40
  }}
48
- sortValue={sortValue}
41
+ sortValue={[{ name: 'popularity', dir: 'desc' }]}
49
42
  {...props}
50
43
  >
51
44
  {({ closePopover }) => (
@@ -89,7 +82,7 @@ const FilterDefault = (props) => {
89
82
  <Filter
90
83
  double
91
84
  minWidth="375px"
92
- onSortChange={handleSortChange2}
85
+ onSortChange={SortingChangeCallback}
93
86
  results={0}
94
87
  sortOptions={{
95
88
  popularity: 'Popularity',
@@ -98,7 +91,7 @@ const FilterDefault = (props) => {
98
91
  // eslint-disable-next-line
99
92
  manager_name: 'Manager\'s Name',
100
93
  }}
101
- sortValue={sortValue2}
94
+ sortValue={[{ name: 'popularity', dir: 'desc' }]}
102
95
  {...props}
103
96
  >
104
97
  {({ closePopover }) => (
@@ -44,9 +44,9 @@ module Playbook
44
44
  def sort_icon(direction)
45
45
  case direction
46
46
  when "asc"
47
- "arrow-up-short-wide"
47
+ "sort-amount-up"
48
48
  when "desc"
49
- "arrow-down-wide-short"
49
+ "sort-amount-down"
50
50
  else
51
51
  ""
52
52
  end
@@ -1,18 +1,14 @@
1
1
  <%= pb_form_with(scope: :example, url: "", method: :get, validate: true) do |form| %>
2
2
  <%= form.text_field :example_text_field, props: { label: true, required: true, required_indicator: true } %>
3
3
  <%= 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 } %>
6
4
  <%= form.email_field :example_email_field, props: { label: true, required: true, required_indicator: true } %>
7
5
  <%= form.number_field :example_number_field, props: { label: true, required: true, required_indicator: true } %>
8
6
  <%= form.search_field :example_search_field, props: { label: true, required: true, required_indicator: true } %>
9
7
  <%= form.password_field :example_password_field, props: { label: true, required: true, required_indicator: true } %>
10
8
  <%= form.url_field :example_url_field, props: { label: true, required: true, required_indicator: true } %>
11
- <%= form.phone_number_field :example_phone_number_field, props: { label: true, required: true, required_indicator: true } %>
12
- <%= form.time_picker :example_time_picker_required_indicator, props: { label: true, required: true, required_indicator: true } %>
13
9
 
14
10
  <%= form.actions do |action| %>
15
11
  <%= action.submit %>
16
12
  <%= action.button props: { type: "reset", text: "Cancel", variant: "secondary" } %>
17
13
  <% end %>
18
- <% end %>
14
+ <% end %>
@@ -26,10 +26,6 @@ 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
-
33
29
  FIELD_EVENTS.forEach((e) => {
34
30
  field.addEventListener(e, debounce((event) => {
35
31
  this.validateFormField(event)
@@ -71,16 +67,13 @@ class PbFormValidation extends PbEnhancedElement {
71
67
 
72
68
  // Check if this is a phone number input
73
69
  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')
77
70
 
78
71
  // ensure clean error message state
79
72
  this.clearError(target)
80
73
  kitElement.classList.add('error')
81
74
 
82
- // Only add error message if it's NOT a phone number input or TimePicker input
83
- if (!isPhoneNumberInput && !isTimePickerInput) {
75
+ // Only add error message if it's NOT a phone number input
76
+ if (!isPhoneNumberInput) {
84
77
  // set the error message element
85
78
  const errorMessageContainer = this.errorMessageContainer
86
79
 
@@ -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,10 +49,6 @@ module Playbook
49
49
  def wrapped_class
50
50
  wrapped ? "wrapped" : nil
51
51
  end
52
-
53
- def truncate_props
54
- nil
55
- end
56
52
  end
57
53
  end
58
54
  end
@@ -109,18 +109,13 @@ module Playbook
109
109
 
110
110
  svg["class"] = %w[pb_custom_icon svg-inline--fa].concat([object.custom_icon_classname]).join(" ")
111
111
  svg["id"] = object.id
112
+ svg["data"] = object.data
112
113
  svg["height"] = "auto"
113
114
  svg["width"] = "auto"
114
115
  svg["tabindex"] = object.tabindex
115
116
  fill_color = object.color || "currentColor"
116
117
  doc.at_css("path")["fill"] = fill_color
117
118
 
118
- if object.data.present?
119
- object.data.each do |key, value|
120
- svg["data-#{key}"] = value
121
- end
122
- end
123
-
124
119
  if object.aria.present?
125
120
  object.aria.each do |key, value|
126
121
  k = key.to_s
@@ -1,39 +1,37 @@
1
1
  examples:
2
2
  rails:
3
- - multi_level_select_default: Default
4
- - multi_level_select_single: Single Select
5
- - multi_level_select_single_children_only: Single Select w/ Hidden Radios
6
- - multi_level_select_return_all_selected: Return All Selected
7
- - multi_level_select_input_display: With Input Display None
8
- - multi_level_select_selected_ids: Selected Ids
9
- - multi_level_select_with_form: With Form
10
- - multi_level_select_color: With Pills (Custom Color)
11
- - multi_level_select_reset: Reset Selection
12
- - multi_level_select_label: With Label
13
- - multi_level_select_error: Error
14
- - multi_level_select_disabled: Disabled Input
15
- - multi_level_select_disabled_options_default: Disabled Options (Default)
16
- - multi_level_select_disabled_options: Disabled Options (Return All Selected)
17
- - multi_level_select_disabled_options_parent_default: Disabled Parent Option (Default)
18
- - multi_level_select_disabled_options_parent: Disabled Parent Option (Return All Selected)
19
- - multi_level_select_single_disabled: Disabled Options (Single Select)
3
+ - multi_level_select_default: Default
4
+ - multi_level_select_single: Single Select
5
+ - multi_level_select_single_children_only: Single Select w/ Hidden Radios
6
+ - multi_level_select_return_all_selected: Return All Selected
7
+ - multi_level_select_selected_ids: Selected Ids
8
+ - multi_level_select_with_form: With Form
9
+ - multi_level_select_color: With Pills (Custom Color)
10
+ - multi_level_select_reset: Reset Selection
11
+ - multi_level_select_label: With Label
12
+ - multi_level_select_error: Error
13
+ - multi_level_select_disabled: Disabled Input
14
+ - multi_level_select_disabled_options_default: Disabled Options (Default)
15
+ - multi_level_select_disabled_options: Disabled Options (Return All Selected)
16
+ - multi_level_select_disabled_options_parent_default: Disabled Parent Option (Default)
17
+ - multi_level_select_disabled_options_parent: Disabled Parent Option (Return All Selected)
18
+ - multi_level_select_single_disabled: Disabled Options (Single Select)
20
19
 
21
20
  react:
22
- - multi_level_select_default: Default
23
- - multi_level_select_react_hook: React Hook
24
- - multi_level_select_single: Single Select
25
- - multi_level_select_single_children_only: Single Select w/ Hidden Radios
26
- - multi_level_select_return_all_selected: Return All Selected
27
- - multi_level_select_input_display: With Input Display None
28
- - multi_level_select_selected_ids_react: Selected Ids
29
- - multi_level_select_color: With Pills (Custom Color)
30
- - multi_level_select_with_children: Checkboxes With Children
31
- - multi_level_select_with_children_with_radios: Single Select With Children
32
- - multi_level_select_label: With Label
33
- - multi_level_select_error: Error
34
- - multi_level_select_disabled: Disabled Input
35
- - multi_level_select_disabled_options_default: Disabled Options (Default)
36
- - multi_level_select_disabled_options: Disabled Options (Return All Selected)
37
- - multi_level_select_disabled_options_parent_default: Disabled Parent Option (Default)
38
- - multi_level_select_disabled_options_parent: Disabled Parent Option (Return All Selected)
39
- - multi_level_select_single_disabled: Disabled Options (Single Select)
21
+ - multi_level_select_default: Default
22
+ - multi_level_select_react_hook: React Hook
23
+ - multi_level_select_single: Single Select
24
+ - multi_level_select_single_children_only: Single Select w/ Hidden Radios
25
+ - multi_level_select_return_all_selected: Return All Selected
26
+ - multi_level_select_selected_ids_react: Selected Ids
27
+ - multi_level_select_color: With Pills (Custom Color)
28
+ - multi_level_select_with_children: Checkboxes With Children
29
+ - multi_level_select_with_children_with_radios: Single Select With Children
30
+ - multi_level_select_label: With Label
31
+ - multi_level_select_error: Error
32
+ - multi_level_select_disabled: Disabled Input
33
+ - multi_level_select_disabled_options_default: Disabled Options (Default)
34
+ - multi_level_select_disabled_options: Disabled Options (Return All Selected)
35
+ - multi_level_select_disabled_options_parent_default: Disabled Parent Option (Default)
36
+ - multi_level_select_disabled_options_parent: Disabled Parent Option (Return All Selected)
37
+ - multi_level_select_single_disabled: Disabled Options (Single Select)
@@ -4,7 +4,6 @@ export { default as MultiLevelSelectSingleChildrenOnly } from './_multi_level_se
4
4
  export { default as MultiLevelSelectReturnAllSelected } from './_multi_level_select_return_all_selected.jsx'
5
5
  export { default as MultiLevelSelectSelectedIdsReact } from "./_multi_level_select_selected_ids_react.jsx"
6
6
  export { default as MultiLevelSelectColor } from './_multi_level_select_color.jsx'
7
- export { default as MultiLevelSelectInputDisplay } from './_multi_level_select_input_display.jsx'
8
7
  export { default as MultiLevelSelectWithChildren } from './_multi_level_select_with_children.jsx'
9
8
  export { default as MultiLevelSelectWithChildrenWithRadios } from './_multi_level_select_with_children_with_radios.jsx'
10
9
  export { default as MultiLevelSelectDisabled } from './_multi_level_select_disabled.jsx'
@@ -38,5 +38,5 @@ const MultipleUsersWithTooltip = (props) => {
38
38
  </div>
39
39
  )
40
40
  }
41
-
41
+ ``
42
42
  export default MultipleUsersWithTooltip
@@ -1 +1 @@
1
- Use the `withTooltip` / `with_tooltip` boolean prop to enable setting user-specific tooltip content via the `tooltip` property in the users array.
1
+ Use the `withTooltip` boolean prop to enable setting user-specific tooltip content via the `tooltip` property in the users array.
@@ -4,7 +4,6 @@ examples:
4
4
  - multiple_users_default: Default
5
5
  - multiple_users_reverse: Reverse
6
6
  - multiple_users_size: Size
7
- - multiple_users_with_tooltip: With Tooltip
8
7
 
9
8
 
10
9
  react: