playbook_ui 16.1.0.pre.alpha.play276813969 → 16.1.0.pre.alpha.play277814027

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 (52) 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_date_picker/_date_picker.tsx +14 -5
  9. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default.md +1 -0
  10. data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +11 -46
  11. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_label.html.erb +3 -6
  12. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_label.jsx +0 -1
  13. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_label.md +1 -3
  14. data/app/pb_kits/playbook/pb_dropdown/dropdown.html.erb +4 -10
  15. data/app/pb_kits/playbook/pb_dropdown/dropdown.rb +0 -9
  16. data/app/pb_kits/playbook/pb_dropdown/dropdown_trigger.html.erb +2 -7
  17. data/app/pb_kits/playbook/pb_dropdown/dropdown_trigger.rb +0 -4
  18. data/app/pb_kits/playbook/pb_dropdown/index.js +73 -125
  19. data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownTrigger.tsx +0 -16
  20. data/app/pb_kits/playbook/pb_dropdown/utilities/clickOutsideHelper.tsx +0 -6
  21. data/app/pb_kits/playbook/pb_form/docs/_form_with_required_indicator.html.erb +1 -0
  22. data/app/pb_kits/playbook/pb_form/pb_form_validation.js +9 -2
  23. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.scss +0 -7
  24. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +549 -638
  25. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_label.html.erb +3 -3
  26. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_label.jsx +7 -4
  27. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.test.jsx +4 -4
  28. data/app/pb_kits/playbook/pb_textarea/_textarea.tsx +10 -0
  29. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_default.html.erb +3 -3
  30. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_default.jsx +3 -0
  31. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_default.md +1 -0
  32. data/app/pb_kits/playbook/pb_textarea/textarea.html.erb +25 -9
  33. data/app/pb_kits/playbook/pb_textarea/textarea.rb +7 -1
  34. data/app/pb_kits/playbook/pb_time_picker/_time_picker.tsx +97 -11
  35. data/app/pb_kits/playbook/pb_time_picker/docs/_time_picker_on_handler.jsx +5 -2
  36. data/app/pb_kits/playbook/pb_time_picker/docs/_time_picker_required_indicator.html.erb +6 -0
  37. data/app/pb_kits/playbook/pb_time_picker/docs/_time_picker_required_indicator.jsx +16 -0
  38. data/app/pb_kits/playbook/pb_time_picker/docs/_time_picker_required_indicator.md +3 -0
  39. data/app/pb_kits/playbook/pb_time_picker/docs/example.yml +2 -0
  40. data/app/pb_kits/playbook/pb_time_picker/docs/index.js +1 -0
  41. data/app/pb_kits/playbook/pb_time_picker/time_picker.rb +3 -0
  42. data/app/pb_kits/playbook/pb_time_picker/time_picker.test.jsx +47 -1
  43. data/dist/chunks/_typeahead-CWA5wlah.js +1 -0
  44. data/dist/chunks/vendor.js +3 -3
  45. data/dist/menu.yml +2 -2
  46. data/dist/playbook-rails-react-bindings.js +1 -1
  47. data/dist/playbook-rails.js +1 -1
  48. data/dist/playbook.css +1 -1
  49. data/lib/playbook/version.rb +1 -1
  50. metadata +10 -4
  51. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_label.md +0 -3
  52. data/dist/chunks/_typeahead-C4YsbA48.js +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 387f03d299bddebe2e4ac7e9800fddf28bb00cdeceb0ffcd9a5c4ea1ed211d20
4
- data.tar.gz: 03b9b1cbcb66afd3afd4d28eb8c0226dc4d7a2ddc883dadb0844bc427f857831
3
+ metadata.gz: 1ba1ccdd547ffbb9a3028c4f7ebe9c545e978f3a156cb09f8d23f72be12ca8e5
4
+ data.tar.gz: c99e2ee648ba1e7a07f2312a927705a23b2c0d231d25e6d9f7ff896c1994cc47
5
5
  SHA512:
6
- metadata.gz: e4f7c1a63a205b06dadc63869cbfb9f761d88775d9d625efe37bd896d1cbd5269107b71fc0c24714bb781c2b314e949aa5a37bcab80eed8689fe0d90b72796f9
7
- data.tar.gz: 7933fda91c7fe525372cb559bcc56147fe86bc877cac737603ee0694b62f34fdef93cd2e40b88860de6a51f0c389e21ac2ae6d858cd1cb14531a31083e78bd7c
6
+ metadata.gz: d3cd8f6f1ce697e21eba5d9e2825d2b9e405282cde1f2944dae69b6bf159c643e10ed0726cd88015fbf15c4da6727408afb25b318c8196bcc58457c976cb7bf2
7
+ data.tar.gz: 2d7b6db05ed92ce9a0d2c0f8a4bfcb374f4bea28e4807b1591d38a1a792902ba45bd086e4b36dc696330187142185f6995f566bec7d4b3e851363571bd2d7c76
@@ -66,8 +66,18 @@ const TableCellRenderer = ({
66
66
  // Find the "owning" colDefinition by accessor. Needed for multi column logic
67
67
  const colDef = findColumnDefByAccessor(columnDefinitions ?? [], column.id)
68
68
  const cellAlignment = colDef?.columnStyling?.cellAlignment ?? "right"
69
- const cellFontColor = colDef?.columnStyling?.fontColor
70
- const cellBackgroundColor = colDef?.columnStyling?.cellBackgroundColor
69
+
70
+ // Support function-based styling for conditional rendering
71
+ const cellFontColorValue = colDef?.columnStyling?.fontColor
72
+ const cellFontColor = typeof cellFontColorValue === 'function'
73
+ ? cellFontColorValue(row)
74
+ : cellFontColorValue
75
+
76
+ const cellBackgroundColorValue = colDef?.columnStyling?.cellBackgroundColor
77
+ const cellBackgroundColor = typeof cellBackgroundColorValue === 'function'
78
+ ? cellBackgroundColorValue(row)
79
+ : cellBackgroundColorValue
80
+
71
81
  const paddingValue = colDef?.columnStyling?.cellPadding ?? customRowStyle?.cellPadding
72
82
  const paddingClass = paddingValue ? `p_${paddingValue}` : undefined
73
83
 
@@ -920,6 +920,39 @@ test("columnStyling.backgroundColor works as excpected", () => {
920
920
  expect(firstEnrollmentCell).toHaveStyle({ backgroundColor: colors.error_subtle });
921
921
  });
922
922
 
923
+ test("columnStyling.cellBackgroundColor works as expected with function", () => {
924
+ const styledColumnDefs = [
925
+ {
926
+ accessor: "year",
927
+ label: "Year",
928
+ cellAccessors: ["quarter", "month", "day"],
929
+ },
930
+ {
931
+ accessor: "newEnrollments",
932
+ label: "New Enrollments",
933
+ columnStyling:{
934
+ cellBackgroundColor: (row) => row.original.newEnrollments > 15 ? colors.success_subtle : colors.error_subtle,
935
+ fontColor: (row) => row.original.newEnrollments > 15 ? colors.success : colors.error,
936
+ },
937
+ },
938
+ {
939
+ accessor: "scheduledMeetings",
940
+ label: "Scheduled Meetings",
941
+ },
942
+ ];
943
+
944
+ render(
945
+ <AdvancedTable
946
+ columnDefinitions={styledColumnDefs}
947
+ data={{ testid: testId }}
948
+ tableData={MOCK_DATA}
949
+ />
950
+ );
951
+
952
+ const firstEnrollmentCell = screen.getAllByText("20")[0].closest("td");
953
+ expect(firstEnrollmentCell).toHaveStyle({ backgroundColor: colors.success_subtle, color: colors.success });
954
+ });
955
+
923
956
  test("columnStyling.headerBackgroundColor works as excpected", () => {
924
957
  const styledColumnDefs = [
925
958
  {
@@ -0,0 +1,71 @@
1
+ import React from "react"
2
+ import AdvancedTable from '../_advanced_table'
3
+ import colors from '../../tokens/exports/_colors.module.scss'
4
+ import MOCK_DATA from "./advanced_table_mock_data.json"
5
+ import Flex from '../../pb_flex/_flex'
6
+ import Title from '../../pb_title/_title'
7
+ import Body from '../../pb_body/_body'
8
+
9
+
10
+ const AdvancedTableColumnStylingBackgroundCustom = (props) => {
11
+ const columnDefinitions = [
12
+ {
13
+ accessor: "year",
14
+ label: "Year",
15
+ cellAccessors: ["quarter", "month", "day"],
16
+ customRenderer: (row, value) => (
17
+ <Flex flexDirection="column">
18
+ <Title size={4}
19
+ text={value}
20
+ />
21
+ <Body text="lorem ipsum" />
22
+ <Body text="lorem ipsum" />
23
+ </Flex>
24
+ ),
25
+ },
26
+ {
27
+ accessor: "newEnrollments",
28
+ label: "New Enrollments",
29
+ columnStyling:{
30
+ cellBackgroundColor: (row) => row.original.newEnrollments > 15 ? colors.success_subtle : colors.error_subtle,
31
+ fontColor: (row) => row.original.newEnrollments > 15 ? colors.success : colors.error,
32
+ },
33
+ },
34
+ {
35
+ accessor: "scheduledMeetings",
36
+ label: "Scheduled Meetings",
37
+ columnStyling:{
38
+ cellBackgroundColor: (row) => row.original.scheduledMeetings >= 15 ? colors.info_subtle : colors.warning_subtle
39
+ },
40
+ },
41
+ {
42
+ accessor: "attendanceRate",
43
+ label: "Attendance Rate",
44
+ columnStyling:{cellBackgroundColor: colors.info, headerBackgroundColor: colors.info, fontColor: colors.white, headerFontColor: colors.white},
45
+ },
46
+ {
47
+ accessor: "completedClasses",
48
+ label: "Completed Classes",
49
+ },
50
+ {
51
+ accessor: "classCompletionRate",
52
+ label: "Class Completion Rate",
53
+ },
54
+ {
55
+ accessor: "graduatedStudents",
56
+ label: "Graduated Students",
57
+ },
58
+ ]
59
+
60
+ return (
61
+ <div>
62
+ <AdvancedTable
63
+ columnDefinitions={columnDefinitions}
64
+ tableData={MOCK_DATA}
65
+ {...props}
66
+ />
67
+ </div>
68
+ )
69
+ }
70
+
71
+ export default AdvancedTableColumnStylingBackgroundCustom
@@ -0,0 +1,4 @@
1
+ `cellBackgroundColor` and `fontColor` can also accept functions for conditional styling based on row data. The function receives the row object and returns a color value.
2
+
3
+ See the code snippet below for more details.
4
+
@@ -78,6 +78,7 @@ examples:
78
78
  - advanced_table_column_styling: Column Styling
79
79
  - advanced_table_column_styling_column_headers: Column Styling with Multiple Headers
80
80
  - advanced_table_column_styling_background: Column Styling Background Color
81
+ - advanced_table_column_styling_background_custom: Column Styling Background Color (Custom)
81
82
  - advanced_table_column_styling_background_multi: Column Styling Background Color with Multiple Headers
82
83
  - advanced_table_padding_control: Padding Control using Column Styling
83
84
  - advanced_table_column_border_color: Column Group Border Color
@@ -47,4 +47,5 @@ export { default as AdvancedTableSortPerColumnForMultiColumn } from './_advanced
47
47
  export { default as AdvancedTablePaddingControl } from './_advanced_table_padding_control.jsx'
48
48
  export { default as AdvancedTablePaddingControlPerRow } from './_advanced_table_padding_control_per_row.jsx'
49
49
  export { default as AdvancedTableColumnStylingBackground } from './_advanced_table_column_styling_background.jsx'
50
- export { default as AdvancedTableColumnStylingBackgroundMulti } from './_advanced_table_column_styling_background_multi.jsx'
50
+ export { default as AdvancedTableColumnStylingBackgroundMulti } from './_advanced_table_column_styling_background_multi.jsx'
51
+ export { default as AdvancedTableColumnStylingBackgroundCustom } from './_advanced_table_column_styling_background_custom.jsx'
@@ -40,7 +40,7 @@ type DatePickerProps = {
40
40
  maxDate: string,
41
41
  minDate: string,
42
42
  name: string,
43
- pickerId?: string,
43
+ pickerId: string,
44
44
  placeholder?: string,
45
45
  positionElement?: HTMLElement | null,
46
46
  scrollContainer?: string,
@@ -196,6 +196,8 @@ const DatePicker = (props: DatePickerProps): React.ReactElement => {
196
196
 
197
197
  const angleDown = getAllIcons()["angleDown"].icon as unknown as { [key: string]: SVGElement }
198
198
 
199
+ const errorId = error ? `${pickerId}-error` : undefined
200
+
199
201
  return (
200
202
  <div
201
203
  {...ariaProps}
@@ -211,14 +213,18 @@ const DatePicker = (props: DatePickerProps): React.ReactElement => {
211
213
  >
212
214
 
213
215
  {!hideLabel && (
214
- <Caption
215
- className="pb_date_picker_kit_label"
216
- text={label}
217
- />
216
+ <label htmlFor={pickerId}>
217
+ <Caption
218
+ className="pb_date_picker_kit_label"
219
+ text={label}
220
+ />
221
+ </label>
218
222
  )}
219
223
  <>
220
224
  <div className="date_picker_input_wrapper">
221
225
  <input
226
+ aria-describedby={errorId}
227
+ aria-invalid={!!error}
222
228
  autoComplete="off"
223
229
  className="date_picker_input"
224
230
  disabled={disableInput}
@@ -232,6 +238,9 @@ const DatePicker = (props: DatePickerProps): React.ReactElement => {
232
238
 
233
239
  {error &&
234
240
  <Body
241
+ aria={{ atomic: "true", live: "polite" }}
242
+ htmlOptions={{ role: "alert" }}
243
+ id={errorId}
235
244
  status="negative"
236
245
  text={error}
237
246
  variant={null}
@@ -0,0 +1 @@
1
+ `pickerId`/`picker_id` is a **required prop** to instantiate the Date Picker. The presence of `pickerId`/`picker_id` in your Date Picker also associates the label with the input, providing the ability to focus the Date Picker by clicking the label.
@@ -119,16 +119,6 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
119
119
 
120
120
  const [isDropDownClosed, setIsDropDownClosed, toggleDropdown] = useDropdown(isClosed);
121
121
 
122
- // Use a suffix for the trigger ID to avoid conflict with the outer div's id
123
- const sanitizeForId = (str: string) =>
124
- str.toLowerCase().replace(/\s+/g, "_").replace(/[^a-z0-9_]/g, "");
125
- const selectId = id
126
- ? `${id}_trigger`
127
- : label
128
- ? sanitizeForId(label)
129
- : undefined;
130
- const errorId = error ? `${selectId}-error` : undefined;
131
-
132
122
  const [filterItem, setFilterItem] = useState("");
133
123
  const initialSelected = useMemo(() => {
134
124
  // Handle quickpick variant with string defaultValue (e.g., "This Month")
@@ -161,19 +151,9 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
161
151
 
162
152
  const dropdownRef = useRef(null);
163
153
  const inputRef = useRef<HTMLInputElement>(null);
164
- const inputWrapperRef = useRef<HTMLDivElement | null>(null);
154
+ const inputWrapperRef = useRef(null);
165
155
  const dropdownContainerRef = useRef(null);
166
156
 
167
- const handleLabelClick = (e: React.MouseEvent) => {
168
- e.stopPropagation();
169
- if (selectId) {
170
- const trigger = document.getElementById(selectId);
171
- if (trigger) trigger.focus();
172
- }
173
- setIsInputFocused(true);
174
- toggleDropdown();
175
- };
176
-
177
157
  const selectedArray = Array.isArray(selected)
178
158
  ? selected
179
159
  : selected && Object.keys(selected).length
@@ -431,12 +411,9 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
431
411
  autocomplete,
432
412
  clearable,
433
413
  dropdownContainerRef,
434
- error,
435
- errorId,
436
- filterItem,
437
414
  filteredOptions,
415
+ filterItem,
438
416
  focusedOptionIndex,
439
- label,
440
417
  formPillProps,
441
418
  handleBackspace,
442
419
  handleChange,
@@ -446,7 +423,6 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
446
423
  inputWrapperRef,
447
424
  isDropDownClosed,
448
425
  isInputFocused,
449
- selectId,
450
426
  multiSelect,
451
427
  onSelect,
452
428
  optionsWithBlankSelection,
@@ -458,20 +434,13 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
458
434
  toggleDropdown
459
435
  }}
460
436
  >
461
- {label && (
462
- <label
463
- data-dropdown="pb-dropdown-label"
464
- htmlFor={selectId}
465
- onClick={handleLabelClick}
466
- >
467
- <Caption
468
- className="pb_dropdown_kit_label"
469
- dark={dark}
470
- marginBottom="xs"
471
- text={label}
472
- />
473
- </label>
474
- )}
437
+ {label &&
438
+ <Caption
439
+ dark={dark}
440
+ marginBottom="xs"
441
+ text={label}
442
+ />
443
+ }
475
444
  <div className={`dropdown_wrapper ${error ? 'error' : ''}`}
476
445
  onBlur={() => {
477
446
  // Debounce to delay the execution to prevent jumpiness in Focus state
@@ -504,16 +473,12 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
504
473
  </>
505
474
  )}
506
475
 
507
- {error && (
476
+ {error &&
508
477
  <Body
509
- aria={{ atomic: "true", live: "polite" }}
510
- dark={dark}
511
- htmlOptions={{ role: "alert" }}
512
- id={errorId}
513
478
  status="negative"
514
479
  text={error}
515
480
  />
516
- )}
481
+ }
517
482
  </div>
518
483
  </DropdownContext.Provider>
519
484
  </div>
@@ -1,13 +1,10 @@
1
- <%
1
+ <%
2
2
  options = [
3
3
  { label: 'United States', value: 'unitedStates', id: 'us' },
4
4
  { label: 'Canada', value: 'canada', id: 'ca' },
5
5
  { label: 'Pakistan', value: 'pakistan', id: 'pk' },
6
6
  ]
7
+
7
8
  %>
8
9
 
9
- <%= pb_rails("dropdown", props: {
10
- id: "select_a_country",
11
- label: "Select a Country",
12
- options: options
13
- }) %>
10
+ <%= pb_rails("dropdown", props: {options: options, label: "Select a Country"}) %>
@@ -25,7 +25,6 @@ const DropdownDefault = (props) => {
25
25
  return (
26
26
  <div>
27
27
  <Dropdown
28
- id="select_a_country"
29
28
  label="Select a Country"
30
29
  options={options}
31
30
  {...props}
@@ -1,3 +1 @@
1
- The top-level Dropdown component optionally accepts any string through a `label` prop to produce a label above your trigger element.
2
-
3
- Add an `id` to wire the label to the trigger so that clicking the label will move focus directly to the input, and open the drop-down.
1
+ The top-level Dropdown component optionally accepts any string through a `label` prop to produce a label above your trigger element.
@@ -1,8 +1,6 @@
1
1
  <%= pb_content_tag do %>
2
2
  <% if object.label.present? %>
3
- <label for="<%= object.select_id %>" data-dropdown="pb-dropdown-label">
4
- <%= pb_rails("caption", props: { text: object.label, margin_bottom: "xs", classname: "pb_dropdown_kit_label", dark: object.dark }) %>
5
- </label>
3
+ <%= pb_rails("caption", props: {text: object.label, margin_bottom:"xs"}) %>
6
4
  <% end %>
7
5
  <div class="dropdown_wrapper<%= error_class %>" style="position: relative">
8
6
  <input
@@ -18,11 +16,9 @@
18
16
  <% end %>
19
17
  <% if content.present? %>
20
18
  <%= content.presence %>
21
- <% if object.error.present? %>
22
- <%= pb_rails("body", props: { status: "negative", text: object.error, id: object.error_id, aria: { atomic: "true", live: "polite" }, html_options: { role: "alert" }, dark: object.dark }) %>
23
- <% end %>
19
+ <%= pb_rails("body", props: { status: "negative", text: object.error }) %>
24
20
  <% else %>
25
- <%= pb_rails("dropdown/dropdown_trigger", props: { autocomplete: object.autocomplete, multi_select: object.multi_select, placeholder: object.placeholder, select_id: object.select_id, label: object.label, error_id: object.error_id, error: object.error }) %>
21
+ <%= pb_rails("dropdown/dropdown_trigger", props:{ autocomplete: object.autocomplete, multi_select:object.multi_select, placeholder: object.placeholder }) %>
26
22
  <%= pb_rails("dropdown/dropdown_container", props: { searchbar: object.searchbar, constrain_height: object.constrain_height }) do %>
27
23
  <% if options_with_blank.present? %>
28
24
  <% options_with_blank.each do |option| %>
@@ -31,9 +27,7 @@
31
27
  <% end %>
32
28
  <% end %>
33
29
 
34
- <% if object.error.present? %>
35
- <%= pb_rails("body", props: { status: "negative", text: object.error, id: object.error_id, aria: { atomic: "true", live: "polite" }, html_options: { role: "alert" }, dark: object.dark }) %>
36
- <% end %>
30
+ <%= pb_rails("body", props: { status: "negative", text: object.error }) %>
37
31
  <% end %>
38
32
  </div>
39
33
  <% end %>
@@ -10,7 +10,6 @@ module Playbook
10
10
  prop :label, type: Playbook::Props::String
11
11
  prop :name, type: Playbook::Props::String
12
12
  prop :error, type: Playbook::Props::String
13
- prop :id, type: Playbook::Props::String
14
13
  prop :required, type: Playbook::Props::Boolean,
15
14
  default: false
16
15
  prop :default_value
@@ -69,14 +68,6 @@ module Playbook
69
68
  generate_classname("pb_dropdown", variant, separators_class)
70
69
  end
71
70
 
72
- def select_id
73
- id.presence || (label.present? ? label.downcase.gsub(/\s+/, "_").gsub(/[^a-z0-9_]/, "") : nil)
74
- end
75
-
76
- def error_id
77
- error.present? ? "#{select_id || 'dropdown_trigger'}-error" : nil
78
- end
79
-
80
71
  private
81
72
 
82
73
  def error_class
@@ -1,10 +1,6 @@
1
1
  <%= pb_content_tag do %>
2
2
  <% if content.present? %>
3
- <div style="display: inline-block" tabindex="0" data-dropdown="pb-dropdown-trigger" data-dropdown-custom-trigger aria-invalid="<%= object.error.present? %>"
4
- <% if object.label.present? %> aria-label="<%= [object.label, object.default_display_placeholder].join(', ') %>"<% end %>
5
- <% if object.select_id.present? %> id="<%= object.select_id %>"<% end %>
6
- <% if object.error_id.present? %> aria-describedby="<%= object.error_id %>"<% end %>
7
- >
3
+ <div style="display: inline-block" tabindex="0" data-dropdown-custom-trigger>
8
4
  <%= content.presence %>
9
5
  </div>
10
6
  <% else %>
@@ -13,11 +9,10 @@
13
9
  border_radius:"lg",
14
10
  classname: object.trigger_wrapper_classes,
15
11
  cursor: object.autocomplete ? "text" : "pointer",
16
- id: object.select_id,
17
12
  justify: "between",
18
13
  padding_x:"sm",
19
14
  padding_y:"xs",
20
- html_options: { tabindex: "0", "aria-label": object.label.present? ? [object.label, object.default_display_placeholder].join(", ") : nil, "aria-describedby": object.error_id, "aria-invalid": object.error.present?, "data-dropdown": "pb-dropdown-trigger" }
15
+ html_options: {tabindex:"0"}
21
16
  }) do %>
22
17
  <%= pb_rails("flex/flex_item", props: { fixed_size: object.multi_select ? "85%" : "" }) do %>
23
18
  <%= pb_rails("flex", props: {align: "center"}) do %>
@@ -13,10 +13,6 @@ module Playbook
13
13
  default: false
14
14
  prop :multi_select, type: Playbook::Props::Boolean,
15
15
  default: false
16
- prop :select_id, type: Playbook::Props::String
17
- prop :label, type: Playbook::Props::String
18
- prop :error_id, type: Playbook::Props::String
19
- prop :error, type: Playbook::Props::String
20
16
 
21
17
  def data
22
18
  Hash(prop(:data)).merge(dropdown_trigger: true, dropdown_placeholder: default_display_placeholder)