playbook_ui 16.1.0.pre.alpha.PLAY2800textinputtextareaaccessiblebordercontrast14296 → 16.1.0.pre.alpha.PLAY272013809
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.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/pb_advanced_table/Components/RegularTableView.tsx +2 -12
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +0 -33
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sort.md +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +1 -2
- data/app/pb_kits/playbook/pb_checkbox/_checkbox.scss +1 -1
- data/app/pb_kits/playbook/pb_checkbox/_checkbox.tsx +0 -17
- data/app/pb_kits/playbook/pb_checkbox/checkbox.html.erb +1 -10
- data/app/pb_kits/playbook/pb_checkbox/checkbox.rb +0 -2
- data/app/pb_kits/playbook/pb_checkbox/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_checkbox/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +5 -22
- data/app/pb_kits/playbook/pb_date_picker/date_picker.html.erb +16 -25
- data/app/pb_kits/playbook/pb_date_picker/date_picker.rb +0 -3
- data/app/pb_kits/playbook/pb_date_picker/date_picker.test.js +1 -36
- data/app/pb_kits/playbook/pb_date_picker/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_date_picker/docs/index.js +1 -2
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +0 -6
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +14 -97
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display_rails.html.erb +1 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_label.html.erb +3 -6
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_label.jsx +0 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_label.md +1 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +2 -8
- data/app/pb_kits/playbook/pb_dropdown/docs/index.js +1 -5
- data/app/pb_kits/playbook/pb_dropdown/dropdown.html.erb +6 -18
- data/app/pb_kits/playbook/pb_dropdown/dropdown.rb +0 -17
- data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +1 -118
- data/app/pb_kits/playbook/pb_dropdown/dropdown_container.rb +1 -5
- data/app/pb_kits/playbook/pb_dropdown/dropdown_trigger.html.erb +10 -15
- data/app/pb_kits/playbook/pb_dropdown/dropdown_trigger.rb +0 -4
- data/app/pb_kits/playbook/pb_dropdown/index.js +83 -191
- data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownContainer.tsx +0 -3
- data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownTrigger.tsx +1 -18
- data/app/pb_kits/playbook/pb_dropdown/utilities/clickOutsideHelper.tsx +0 -6
- data/app/pb_kits/playbook/pb_filter/Filter/SortMenu.tsx +1 -1
- data/app/pb_kits/playbook/pb_filter/docs/_filter_default.html.erb +2 -2
- data/app/pb_kits/playbook/pb_filter/docs/_filter_default.jsx +9 -16
- data/app/pb_kits/playbook/pb_filter/filter.rb +2 -2
- data/app/pb_kits/playbook/pb_form/docs/_form_with_required_indicator.html.erb +2 -156
- data/app/pb_kits/playbook/pb_form/pb_form_validation.js +2 -9
- data/app/pb_kits/playbook/pb_form_group/docs/_form_group_button.html.erb +1 -1
- data/app/pb_kits/playbook/pb_form_group/docs/_form_group_button.jsx +0 -1
- data/app/pb_kits/playbook/pb_form_group/docs/_form_group_date_picker.html.erb +1 -1
- data/app/pb_kits/playbook/pb_form_group/docs/_form_group_date_picker.jsx +0 -1
- data/app/pb_kits/playbook/pb_form_group/docs/_form_group_default.html.erb +3 -3
- data/app/pb_kits/playbook/pb_form_group/docs/_form_group_default.jsx +1 -4
- data/app/pb_kits/playbook/pb_form_group/docs/_form_group_full_width.html.erb +4 -4
- data/app/pb_kits/playbook/pb_form_group/docs/_form_group_full_width.jsx +1 -4
- data/app/pb_kits/playbook/pb_form_group/docs/_form_group_typeahead.jsx +0 -1
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.html.erb +5 -5
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.jsx +4 -4
- data/app/pb_kits/playbook/pb_form_pill/form_pill.rb +0 -4
- data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.scss +0 -7
- data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +549 -650
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_label.html.erb +3 -3
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_label.jsx +7 -4
- data/app/pb_kits/playbook/pb_multi_level_select/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_multi_level_select/docs/index.js +17 -18
- data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.rb +0 -3
- data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.test.jsx +25 -55
- data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select_options.tsx +3 -3
- data/app/pb_kits/playbook/pb_nav/_item.tsx +3 -5
- data/app/pb_kits/playbook/pb_nav/_nav.scss +3 -82
- data/app/pb_kits/playbook/pb_nav/docs/example.yml +6 -2
- data/app/pb_kits/playbook/pb_nav/docs/index.js +1 -2
- data/app/pb_kits/playbook/pb_nav/item.html.erb +1 -1
- data/app/pb_kits/playbook/pb_nav/item.rb +1 -1
- data/app/pb_kits/playbook/pb_nav/navTypes.ts +0 -1
- data/app/pb_kits/playbook/pb_passphrase/_passphrase.tsx +7 -40
- data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.jsx +0 -1
- data/app/pb_kits/playbook/pb_passphrase/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_passphrase/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_passphrase/passphrase.rb +0 -2
- data/app/pb_kits/playbook/pb_passphrase/passphrase.test.jsx +1 -30
- data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +0 -3
- data/app/pb_kits/playbook/pb_phone_number_input/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_phone_number_input/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_phone_number_input/phone_number_input.rb +0 -3
- data/app/pb_kits/playbook/pb_phone_number_input/phone_number_input.test.js +3 -34
- data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.tsx +16 -51
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_required_indicator.jsx +0 -1
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.jsx +0 -1
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/index.js +0 -2
- data/app/pb_kits/playbook/pb_table/index.ts +27 -29
- data/app/pb_kits/playbook/pb_text_input/_text_input.scss +20 -51
- data/app/pb_kits/playbook/pb_text_input/_text_input.tsx +1 -1
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_disabled.jsx +13 -11
- data/app/pb_kits/playbook/pb_text_input/text_input.html.erb +10 -10
- data/app/pb_kits/playbook/pb_textarea/_textarea.scss +12 -55
- data/app/pb_kits/playbook/pb_textarea/_textarea.tsx +1 -11
- data/app/pb_kits/playbook/pb_textarea/_textarea_mixin.scss +10 -31
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_default.html.erb +3 -3
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_default.jsx +0 -3
- data/app/pb_kits/playbook/pb_textarea/textarea.html.erb +9 -25
- data/app/pb_kits/playbook/pb_textarea/textarea.rb +1 -7
- data/app/pb_kits/playbook/pb_time_picker/_time_picker.tsx +11 -97
- data/app/pb_kits/playbook/pb_time_picker/docs/_time_picker_on_handler.jsx +2 -5
- data/app/pb_kits/playbook/pb_time_picker/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_time_picker/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_time_picker/time_picker.rb +0 -3
- data/app/pb_kits/playbook/pb_time_picker/time_picker.test.jsx +1 -47
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.test.jsx +2 -53
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.tsx +324 -413
- data/app/pb_kits/playbook/pb_typeahead/components/Control.tsx +0 -2
- data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.tsx +1 -4
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_truncated_text.html.erb +1 -1
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_truncated_text.jsx +1 -1
- data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_typeahead/docs/index.js +21 -22
- data/app/pb_kits/playbook/pb_typeahead/typeahead.html.erb +2 -3
- data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +1 -7
- data/app/pb_kits/playbook/tokens/_colors.scss +0 -3
- data/app/pb_kits/playbook/tokens/exports/_colors.module.scss +0 -10
- data/dist/chunks/{_pb_line_graph-CC2Ywwix.js → _pb_line_graph-BgKF_zz1.js} +1 -1
- data/dist/chunks/_typeahead-B9a6ZsEP.js +1 -0
- data/dist/chunks/{globalProps-DYr2qrIf.js → globalProps-BhVYCqRf.js} +1 -1
- data/dist/chunks/lib-DD34ZrWL.js +29 -0
- data/dist/chunks/vendor.js +3 -3
- data/dist/menu.yml +2 -2
- data/dist/playbook-rails-react-bindings.js +1 -1
- data/dist/playbook-rails.js +1 -1
- data/dist/playbook.css +2 -2
- data/dist/reset.css +1 -1
- data/lib/playbook/align_content.rb +3 -13
- data/lib/playbook/align_items.rb +3 -13
- data/lib/playbook/align_self.rb +3 -13
- data/lib/playbook/display.rb +0 -5
- data/lib/playbook/flex.rb +3 -13
- data/lib/playbook/flex_direction.rb +3 -13
- data/lib/playbook/flex_grow.rb +3 -13
- data/lib/playbook/flex_shrink.rb +3 -13
- data/lib/playbook/flex_wrap.rb +3 -13
- data/lib/playbook/forms/builder/date_picker_field.rb +2 -8
- data/lib/playbook/forms/builder/dropdown_field.rb +1 -7
- data/lib/playbook/forms/builder/form_field_builder.rb +1 -1
- data/lib/playbook/forms/builder/multi_level_select_field.rb +0 -8
- data/lib/playbook/forms/builder/phone_number_field.rb +0 -9
- data/lib/playbook/forms/builder/typeahead_field.rb +1 -15
- data/lib/playbook/forms/builder.rb +2 -2
- data/lib/playbook/justify_content.rb +3 -13
- data/lib/playbook/justify_self.rb +3 -13
- data/lib/playbook/order.rb +3 -13
- data/lib/playbook/spacing.rb +9 -39
- data/lib/playbook/text_align.rb +3 -13
- data/lib/playbook/truncate.rb +1 -1
- data/lib/playbook/version.rb +1 -1
- data/lib/playbook/vertical_align.rb +3 -13
- data/lib/playbook/z_index.rb +0 -5
- data/lib/playbook.rb +0 -1
- metadata +6 -56
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_background_custom.jsx +0 -71
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_background_custom.md +0 -4
- data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_required_indicator.html.erb +0 -6
- data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_required_indicator.jsx +0 -17
- data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_required_indicator.md +0 -3
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default.md +0 -1
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_required_indicator.html.erb +0 -5
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_required_indicator.jsx +0 -13
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_required_indicator.md +0 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_blank_selection_rails.md +0 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_blank_selection_react.md +0 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_required_indicator.html.erb +0 -14
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_required_indicator.jsx +0 -42
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_required_indicator.md +0 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_clearable.html.erb +0 -52
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_clearable.jsx +0 -72
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_clearable.md +0 -5
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height.jsx +0 -33
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height_rails.html.erb +0 -20
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height_rails.md +0 -8
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height_react.md +0 -8
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_placeholder.html.erb +0 -9
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_placeholder.jsx +0 -33
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_placeholder.md +0 -3
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_label.md +0 -3
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_required_indicator.html.erb +0 -72
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_required_indicator.jsx +0 -87
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_required_indicator.md +0 -3
- data/app/pb_kits/playbook/pb_nav/docs/_collapsible_nav_disabled_item.html.erb +0 -24
- data/app/pb_kits/playbook/pb_nav/docs/_collapsible_nav_disabled_item.jsx +0 -87
- data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_required_indicator.html.erb +0 -7
- data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_required_indicator.jsx +0 -24
- data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_required_indicator.md +0 -3
- data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_required_indicator.html.erb +0 -5
- data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_required_indicator.jsx +0 -14
- data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_required_indicator.md +0 -3
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_label.jsx +0 -44
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_label.md +0 -1
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_label.jsx +0 -28
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_label.md +0 -1
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_default.md +0 -1
- data/app/pb_kits/playbook/pb_time_picker/docs/_time_picker_required_indicator.html.erb +0 -6
- data/app/pb_kits/playbook/pb_time_picker/docs/_time_picker_required_indicator.jsx +0 -16
- data/app/pb_kits/playbook/pb_time_picker/docs/_time_picker_required_indicator.md +0 -3
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_required_indicator.html.erb +0 -16
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_required_indicator.jsx +0 -23
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_required_indicator.md +0 -3
- data/app/pb_kits/playbook/tokens/_colors_accessible.scss +0 -250
- data/dist/chunks/_typeahead-BWJHXtvg.js +0 -1
- data/dist/chunks/lib-DgqmX9CF.js +0 -29
- data/lib/playbook/tokens/colors.json +0 -99
- data/lib/playbook/tokens.rb +0 -99
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ac6a39ac1cb6ec18fcba139cebeb541aaf10f24f4488643bc91d227db570a1f4
|
|
4
|
+
data.tar.gz: 1b968b6f5f6513392b8ed7013ea5397fdf42fb0e7f426564ba50aa331296dfc8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a38266fabaceae1bf080f2802ede800f0db99d1991cb82b6773b6ef63c094a2b6df462547edf359a06917b689fdd278a8c7882edcff5afd0ac76f948ded9f45b
|
|
7
|
+
data.tar.gz: d21b8d9a27b38812cd09ce8aea5c42a2c2976db366251c7333a7bfccdc68459775044ec86bf81108eb796820abedab92edc40550e769cd50cbe2ffa5e2a426c4
|
|
@@ -66,18 +66,8 @@ 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
|
-
|
|
70
|
-
|
|
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
|
-
|
|
69
|
+
const cellFontColor = colDef?.columnStyling?.fontColor
|
|
70
|
+
const cellBackgroundColor = colDef?.columnStyling?.cellBackgroundColor
|
|
81
71
|
const paddingValue = colDef?.columnStyling?.cellPadding ?? customRowStyle?.cellPadding
|
|
82
72
|
const paddingClass = paddingValue ? `p_${paddingValue}` : undefined
|
|
83
73
|
|
|
@@ -920,39 +920,6 @@ 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
|
-
|
|
956
923
|
test("columnStyling.headerBackgroundColor works as excpected", () => {
|
|
957
924
|
const styledColumnDefs = [
|
|
958
925
|
{
|
|
@@ -2,4 +2,4 @@ the `enableSorting` prop is a boolean prop set to false by default. If true, the
|
|
|
2
2
|
|
|
3
3
|
### sortIcon
|
|
4
4
|
|
|
5
|
-
An optional prop, `sortIcon` allows you to customize your icon sets by passing it an array of any comma-separated pair of icon values. The first icon value will replace the kit's default icon when sort direction is desc, and the second value will replace the default icon when sort direction is asc. `sortIcon` also allows you to pass it a single icon as a string, in which case the icon will not toggle with the sort state. Default for this prop is `["arrow-up-wide
|
|
5
|
+
An optional prop, `sortIcon` allows you to customize your icon sets by passing it an array of any comma-separated pair of icon values. The first icon value will replace the kit's default icon when sort direction is desc, and the second value will replace the default icon when sort direction is asc. `sortIcon` also allows you to pass it a single icon as a string, in which case the icon will not toggle with the sort state. Default for this prop is `["arrow-up-short-wide", "arrow-down-short-wide"]`. All strings must be valid FA icons.
|
|
@@ -78,7 +78,6 @@ 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)
|
|
82
81
|
- advanced_table_column_styling_background_multi: Column Styling Background Color with Multiple Headers
|
|
83
82
|
- advanced_table_padding_control: Padding Control using Column Styling
|
|
84
83
|
- advanced_table_column_border_color: Column Group Border Color
|
|
@@ -47,5 +47,4 @@ 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'
|
|
51
|
-
export { default as AdvancedTableColumnStylingBackgroundCustom } from './_advanced_table_column_styling_background_custom.jsx'
|
|
50
|
+
export { default as AdvancedTableColumnStylingBackgroundMulti } from './_advanced_table_column_styling_background_multi.jsx'
|
|
@@ -4,8 +4,6 @@ import Icon from '../pb_icon/_icon'
|
|
|
4
4
|
import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from '../utilities/props'
|
|
5
5
|
import classnames from 'classnames'
|
|
6
6
|
import { globalProps, GlobalProps } from '../utilities/globalProps'
|
|
7
|
-
import colors from '../tokens/exports/_colors.module.scss'
|
|
8
|
-
import spacing from '../tokens/exports/_spacing.module.scss'
|
|
9
7
|
|
|
10
8
|
type CheckboxProps = {
|
|
11
9
|
aria?: {[key: string]: string},
|
|
@@ -21,7 +19,6 @@ type CheckboxProps = {
|
|
|
21
19
|
indeterminate?: boolean,
|
|
22
20
|
name?: string,
|
|
23
21
|
onChange?: (event: React.FormEvent<HTMLInputElement>) => void,
|
|
24
|
-
requiredIndicator?: boolean,
|
|
25
22
|
tabIndex?: number,
|
|
26
23
|
text?: string,
|
|
27
24
|
value?: string,
|
|
@@ -42,7 +39,6 @@ const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>((props, ref) => {
|
|
|
42
39
|
indeterminate = false,
|
|
43
40
|
name = '',
|
|
44
41
|
onChange = () => { void 0 },
|
|
45
|
-
requiredIndicator = false,
|
|
46
42
|
tabIndex,
|
|
47
43
|
text = '',
|
|
48
44
|
value = '',
|
|
@@ -128,20 +124,7 @@ const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>((props, ref) => {
|
|
|
128
124
|
variant={null}
|
|
129
125
|
>
|
|
130
126
|
{text}
|
|
131
|
-
{requiredIndicator && (
|
|
132
|
-
<span
|
|
133
|
-
aria-hidden="true"
|
|
134
|
-
className="pb_required_indicator"
|
|
135
|
-
style={{
|
|
136
|
-
color: colors.error,
|
|
137
|
-
marginLeft: spacing.space_xs,
|
|
138
|
-
}}
|
|
139
|
-
>
|
|
140
|
-
{'*'}
|
|
141
|
-
</span>
|
|
142
|
-
)}
|
|
143
127
|
</Body>
|
|
144
|
-
|
|
145
128
|
</label>
|
|
146
129
|
)
|
|
147
130
|
})
|
|
@@ -5,15 +5,6 @@
|
|
|
5
5
|
<%= pb_rails("icon", props: { icon: "minus", classname: "indeterminate_icon hidden", fixed_width: true}) %>
|
|
6
6
|
</span>
|
|
7
7
|
<span class="pb_checkbox_label">
|
|
8
|
-
<%= pb_rails("body", props: { status: object.checkbox_label_status, dark: object.dark, margin_right: object.form_spacing ? "xs" : "" })
|
|
9
|
-
<%= object.text%>
|
|
10
|
-
<% if object.required_indicator %>
|
|
11
|
-
<span
|
|
12
|
-
class="pb_checkbox_required_indicator"
|
|
13
|
-
aria-hidden="true"
|
|
14
|
-
style="color: #DA0014;"
|
|
15
|
-
>*</span>
|
|
16
|
-
<% end %>
|
|
17
|
-
<% end %>
|
|
8
|
+
<%= pb_rails("body", props: { status: object.checkbox_label_status, text: object.text, dark: object.dark, margin_right: object.form_spacing ? "xs" : "" }) %>
|
|
18
9
|
</span>
|
|
19
10
|
<% end %>
|
|
@@ -23,8 +23,6 @@ module Playbook
|
|
|
23
23
|
prop :hidden_input, type: Playbook::Props::Boolean,
|
|
24
24
|
default: false
|
|
25
25
|
prop :hidden_value
|
|
26
|
-
prop :required_indicator, type: Playbook::Props::Boolean,
|
|
27
|
-
default: false
|
|
28
26
|
|
|
29
27
|
def classname
|
|
30
28
|
generate_classname("pb_checkbox_kit", checked_class) + error_class
|
|
@@ -8,7 +8,6 @@ examples:
|
|
|
8
8
|
- checkbox_indeterminate: Indeterminate Checkbox
|
|
9
9
|
- checkbox_disabled: Disabled Checkbox
|
|
10
10
|
- checkbox_form: Form and Hidden Input
|
|
11
|
-
# - checkbox_required_indicator: Required Indicator
|
|
12
11
|
|
|
13
12
|
react:
|
|
14
13
|
- checkbox_default: Default
|
|
@@ -18,7 +17,6 @@ examples:
|
|
|
18
17
|
- checkbox_error: Default w/ Error
|
|
19
18
|
- checkbox_indeterminate: Indeterminate Checkbox
|
|
20
19
|
- checkbox_disabled: Disabled Checkbox
|
|
21
|
-
# - checkbox_required_indicator: Required Indicator
|
|
22
20
|
|
|
23
21
|
swift:
|
|
24
22
|
- checkbox_default_swift: Default
|
|
@@ -5,4 +5,3 @@ export { default as CheckboxError } from './_checkbox_error.jsx'
|
|
|
5
5
|
export { default as CheckboxChecked } from './_checkbox_checked.jsx'
|
|
6
6
|
export { default as CheckboxIndeterminate } from './_checkbox_indeterminate.jsx'
|
|
7
7
|
export { default as CheckboxDisabled } from './_checkbox_disabled.jsx'
|
|
8
|
-
export { default as CheckboxRequiredIndicator } from './_checkbox_required_indicator.jsx'
|
|
@@ -10,7 +10,6 @@ import datePickerHelper from './date_picker_helper'
|
|
|
10
10
|
import Icon from '../pb_icon/_icon'
|
|
11
11
|
import Caption from '../pb_caption/_caption'
|
|
12
12
|
import Body from '../pb_body/_body'
|
|
13
|
-
import colors from "../tokens/exports/_colors.module.scss"
|
|
14
13
|
|
|
15
14
|
type DatePickerProps = {
|
|
16
15
|
allowInput?: boolean,
|
|
@@ -41,10 +40,9 @@ type DatePickerProps = {
|
|
|
41
40
|
maxDate: string,
|
|
42
41
|
minDate: string,
|
|
43
42
|
name: string,
|
|
44
|
-
pickerId
|
|
43
|
+
pickerId?: string,
|
|
45
44
|
placeholder?: string,
|
|
46
45
|
positionElement?: HTMLElement | null,
|
|
47
|
-
requiredIndicator?: boolean
|
|
48
46
|
scrollContainer?: string,
|
|
49
47
|
selectionType?: "month" | "week"| "quickpick",
|
|
50
48
|
showTimezone?: boolean,
|
|
@@ -99,7 +97,6 @@ const DatePicker = (props: DatePickerProps): React.ReactElement => {
|
|
|
99
97
|
plugins = false,
|
|
100
98
|
position,
|
|
101
99
|
positionElement,
|
|
102
|
-
requiredIndicator,
|
|
103
100
|
scrollContainer,
|
|
104
101
|
selectionType = '',
|
|
105
102
|
showTimezone = false,
|
|
@@ -199,8 +196,6 @@ const DatePicker = (props: DatePickerProps): React.ReactElement => {
|
|
|
199
196
|
|
|
200
197
|
const angleDown = getAllIcons()["angleDown"].icon as unknown as { [key: string]: SVGElement }
|
|
201
198
|
|
|
202
|
-
const errorId = error ? `${pickerId}-error` : undefined
|
|
203
|
-
|
|
204
199
|
return (
|
|
205
200
|
<div
|
|
206
201
|
{...ariaProps}
|
|
@@ -216,23 +211,14 @@ const DatePicker = (props: DatePickerProps): React.ReactElement => {
|
|
|
216
211
|
>
|
|
217
212
|
|
|
218
213
|
{!hideLabel && (
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
</Caption>
|
|
224
|
-
) : (
|
|
225
|
-
<Caption className="pb_date_picker_kit_label"
|
|
226
|
-
text={label}
|
|
227
|
-
/>
|
|
228
|
-
)}
|
|
229
|
-
</label>
|
|
214
|
+
<Caption
|
|
215
|
+
className="pb_date_picker_kit_label"
|
|
216
|
+
text={label}
|
|
217
|
+
/>
|
|
230
218
|
)}
|
|
231
219
|
<>
|
|
232
220
|
<div className="date_picker_input_wrapper">
|
|
233
221
|
<input
|
|
234
|
-
aria-describedby={errorId}
|
|
235
|
-
aria-invalid={!!error}
|
|
236
222
|
autoComplete="off"
|
|
237
223
|
className="date_picker_input"
|
|
238
224
|
disabled={disableInput}
|
|
@@ -246,9 +232,6 @@ const DatePicker = (props: DatePickerProps): React.ReactElement => {
|
|
|
246
232
|
|
|
247
233
|
{error &&
|
|
248
234
|
<Body
|
|
249
|
-
aria={{ atomic: "true", live: "polite" }}
|
|
250
|
-
htmlOptions={{ role: "alert" }}
|
|
251
|
-
id={errorId}
|
|
252
235
|
status="negative"
|
|
253
236
|
text={error}
|
|
254
237
|
variant={null}
|
|
@@ -4,35 +4,26 @@
|
|
|
4
4
|
'data-validation-message' => object.validation_message,
|
|
5
5
|
) do %>
|
|
6
6
|
<div class="input_wrapper">
|
|
7
|
-
<% if !object.hide_label && object.label %>
|
|
8
|
-
<label for="<%= object.picker_id %>">
|
|
9
|
-
<% if object.required_indicator %>
|
|
10
|
-
<%= pb_rails("caption", props: { dark: object.dark, classname: "pb_date_picker_kit_label" }) do %>
|
|
11
|
-
<%= object.label %><span style="color: #DA0014;"> *</span>
|
|
12
|
-
<% end %>
|
|
13
|
-
<% else %>
|
|
14
|
-
<%= pb_rails("caption", props: { text: object.label, dark: object.dark, classname: "pb_date_picker_kit_label" }) %>
|
|
15
|
-
<% end %>
|
|
16
|
-
</label>
|
|
17
|
-
<% end %>
|
|
18
7
|
<% if content.present? %>
|
|
19
8
|
<%= content %>
|
|
20
9
|
<% else %>
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
10
|
+
<%= pb_rails("text_input", props: {
|
|
11
|
+
aria: object.input_aria,
|
|
12
|
+
autocomplete: false,
|
|
13
|
+
cursor: object.cursor,
|
|
14
|
+
dark: object.dark,
|
|
15
|
+
data: object.input_data,
|
|
16
|
+
disabled: object.disable_input,
|
|
17
|
+
error: object.error,
|
|
18
|
+
id: object.picker_id,
|
|
19
|
+
label: object.hide_label ? nil : object.label,
|
|
20
|
+
margin_bottom: "none",
|
|
21
|
+
name: object.name,
|
|
22
|
+
placeholder: object.placeholder,
|
|
23
|
+
required: object.required,
|
|
24
|
+
}) %>
|
|
35
25
|
<% end %>
|
|
26
|
+
|
|
36
27
|
<% if object.selection_type == "quickpick" %>
|
|
37
28
|
<input type="hidden" id="<%= "#{object.start_date_id}" %>" name="<%= "#{object.start_date_name}" %>">
|
|
38
29
|
<input type="hidden" id="<%= "#{object.end_date_id}" %>" name="<%= "#{object.end_date_name}" %>">
|
|
@@ -71,8 +71,6 @@ module Playbook
|
|
|
71
71
|
default: false
|
|
72
72
|
prop :required, type: Playbook::Props::Boolean,
|
|
73
73
|
default: false
|
|
74
|
-
prop :required_indicator, type: Playbook::Props::Boolean,
|
|
75
|
-
default: false
|
|
76
74
|
prop :year_range, type: Playbook::Props::Array,
|
|
77
75
|
default: [1900, 2100]
|
|
78
76
|
prop :custom_event_type, type: Playbook::Props::String,
|
|
@@ -115,7 +113,6 @@ module Playbook
|
|
|
115
113
|
position: position,
|
|
116
114
|
positionElement: position_element,
|
|
117
115
|
required: required,
|
|
118
|
-
requiredIndicator: required_indicator,
|
|
119
116
|
selectionType: selection_type,
|
|
120
117
|
showTimezone: show_timezone,
|
|
121
118
|
staticPosition: static_position,
|
|
@@ -257,7 +257,7 @@ describe('DatePicker Kit', () => {
|
|
|
257
257
|
const testId = 'datepicker-out-of-range-after'
|
|
258
258
|
const futureDateString = '01/15/2020'
|
|
259
259
|
const maxDateString = '01/10/2020'
|
|
260
|
-
|
|
260
|
+
|
|
261
261
|
render(
|
|
262
262
|
<DatePicker
|
|
263
263
|
data={{ testid: testId }}
|
|
@@ -275,39 +275,4 @@ describe('DatePicker Kit', () => {
|
|
|
275
275
|
expect(input).toHaveValue('01/15/2020')
|
|
276
276
|
}, { timeout: 5000 })
|
|
277
277
|
})
|
|
278
|
-
|
|
279
|
-
test("renders required indicator asterisk when requiredIndicator is true", () => {
|
|
280
|
-
const testId = "datepicker-required-indicator"
|
|
281
|
-
|
|
282
|
-
render(
|
|
283
|
-
<DatePicker
|
|
284
|
-
data={{ testid: testId }}
|
|
285
|
-
label="Required Date"
|
|
286
|
-
pickerId="date-picker-required-indicator"
|
|
287
|
-
requiredIndicator
|
|
288
|
-
/>
|
|
289
|
-
)
|
|
290
|
-
|
|
291
|
-
const kit = screen.getByTestId(testId)
|
|
292
|
-
const label = within(kit).getByText(/Required Date/)
|
|
293
|
-
expect(label).toBeInTheDocument()
|
|
294
|
-
expect(kit).toHaveTextContent("*")
|
|
295
|
-
})
|
|
296
|
-
|
|
297
|
-
test("does not render required indicator asterisk when requiredIndicator is false", () => {
|
|
298
|
-
const testId = "datepicker-no-required-indicator"
|
|
299
|
-
|
|
300
|
-
render(
|
|
301
|
-
<DatePicker
|
|
302
|
-
data={{ testid: testId }}
|
|
303
|
-
label="Optional Date"
|
|
304
|
-
pickerId="date-picker-no-required-indicator"
|
|
305
|
-
/>
|
|
306
|
-
)
|
|
307
|
-
|
|
308
|
-
const kit = screen.getByTestId(testId)
|
|
309
|
-
const label = within(kit).getByText(/Optional Date/)
|
|
310
|
-
expect(label).toBeInTheDocument()
|
|
311
|
-
expect(kit).not.toHaveTextContent("*")
|
|
312
|
-
})
|
|
313
278
|
})
|
|
@@ -31,7 +31,6 @@ examples:
|
|
|
31
31
|
- date_picker_time: Time Selection
|
|
32
32
|
- date_picker_positions: Custom Positions
|
|
33
33
|
- date_picker_positions_element: Custom Position (based on element)
|
|
34
|
-
- date_picker_required_indicator: Required Indicator
|
|
35
34
|
- date_picker_turbo_frames: Within Turbo Frames
|
|
36
35
|
|
|
37
36
|
react:
|
|
@@ -65,4 +64,3 @@ examples:
|
|
|
65
64
|
- date_picker_time: Time Selection
|
|
66
65
|
- date_picker_positions: Custom Positions
|
|
67
66
|
- date_picker_positions_element: Custom Position (based on element)
|
|
68
|
-
- date_picker_required_indicator: Required Indicator
|
|
@@ -27,5 +27,4 @@ export { default as DatePickerQuickPickCustom } from './_date_picker_quick_pick_
|
|
|
27
27
|
export { default as DatePickerQuickPickCustomOverride } from './_date_picker_quick_pick_custom_override'
|
|
28
28
|
export { default as DatePickerQuickPickDefaultDate } from './_date_picker_quick_pick_default_date'
|
|
29
29
|
export { default as DatePickerRangePattern } from './_date_picker_range_pattern'
|
|
30
|
-
export { default as DatePickerAndDropdownRange } from './_date_picker_and_dropdown_range.jsx'
|
|
31
|
-
export { default as DatePickerRequiredIndicator } from "./_date_picker_required_indicator.jsx";
|
|
30
|
+
export { default as DatePickerAndDropdownRange } from './_date_picker_and_dropdown_range.jsx'
|
|
@@ -6,14 +6,13 @@ import { GenericObject } from "../types";
|
|
|
6
6
|
|
|
7
7
|
import Body from '../pb_body/_body';
|
|
8
8
|
import Caption from "../pb_caption/_caption";
|
|
9
|
-
import colors from "../tokens/exports/_colors.module.scss";
|
|
10
9
|
|
|
11
10
|
import DropdownContainer from "./subcomponents/DropdownContainer";
|
|
12
11
|
import DropdownContext from "./context";
|
|
13
12
|
import DropdownOption from "./subcomponents/DropdownOption";
|
|
14
13
|
import DropdownTrigger from "./subcomponents/DropdownTrigger";
|
|
15
14
|
import useDropdown from "./hooks/useDropdown";
|
|
16
|
-
import
|
|
15
|
+
import getQuickPickOptions from "./quickpick";
|
|
17
16
|
|
|
18
17
|
import {
|
|
19
18
|
separateChildComponents,
|
|
@@ -37,8 +36,6 @@ type DropdownProps = {
|
|
|
37
36
|
blankSelection?: string;
|
|
38
37
|
children?: React.ReactChild[] | React.ReactChild | React.ReactElement[];
|
|
39
38
|
className?: string;
|
|
40
|
-
clearable?: boolean;
|
|
41
|
-
constrainHeight?: boolean;
|
|
42
39
|
customQuickPickDates?: CustomQuickPickDates;
|
|
43
40
|
formPillProps?: GenericObject;
|
|
44
41
|
dark?: boolean;
|
|
@@ -52,7 +49,6 @@ type DropdownProps = {
|
|
|
52
49
|
multiSelect?: boolean;
|
|
53
50
|
onSelect?: (arg: GenericObject) => null;
|
|
54
51
|
options?: GenericObject;
|
|
55
|
-
placeholder?: string;
|
|
56
52
|
separators?: boolean;
|
|
57
53
|
variant?: "default" | "subtle" | "quickpick";
|
|
58
54
|
rangeEndsToday?: boolean;
|
|
@@ -62,7 +58,6 @@ type DropdownProps = {
|
|
|
62
58
|
backgroundColor?: string;
|
|
63
59
|
fontColor?: string;
|
|
64
60
|
};
|
|
65
|
-
requiredIndicator?: boolean;
|
|
66
61
|
};
|
|
67
62
|
|
|
68
63
|
interface DropdownComponent
|
|
@@ -79,8 +74,6 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
|
|
|
79
74
|
blankSelection = '',
|
|
80
75
|
children,
|
|
81
76
|
className,
|
|
82
|
-
clearable = true,
|
|
83
|
-
constrainHeight = false,
|
|
84
77
|
customQuickPickDates,
|
|
85
78
|
dark = false,
|
|
86
79
|
data = {},
|
|
@@ -94,14 +87,12 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
|
|
|
94
87
|
formPillProps,
|
|
95
88
|
onSelect,
|
|
96
89
|
options,
|
|
97
|
-
placeholder,
|
|
98
90
|
rangeEndsToday = false,
|
|
99
91
|
controlsStartId,
|
|
100
92
|
controlsEndId,
|
|
101
93
|
separators = true,
|
|
102
94
|
variant = "default",
|
|
103
95
|
activeStyle,
|
|
104
|
-
requiredIndicator = false
|
|
105
96
|
} = props;
|
|
106
97
|
|
|
107
98
|
const ariaProps = buildAriaProps(aria);
|
|
@@ -122,16 +113,6 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
|
|
|
122
113
|
|
|
123
114
|
const [isDropDownClosed, setIsDropDownClosed, toggleDropdown] = useDropdown(isClosed);
|
|
124
115
|
|
|
125
|
-
// Use a suffix for the trigger ID to avoid conflict with the outer div's id
|
|
126
|
-
const sanitizeForId = (str: string) =>
|
|
127
|
-
str.toLowerCase().replace(/\s+/g, "_").replace(/[^a-z0-9_]/g, "");
|
|
128
|
-
const selectId = id
|
|
129
|
-
? `${id}_trigger`
|
|
130
|
-
: label
|
|
131
|
-
? sanitizeForId(label)
|
|
132
|
-
: undefined;
|
|
133
|
-
const errorId = error ? `${selectId}-error` : undefined;
|
|
134
|
-
|
|
135
116
|
const [filterItem, setFilterItem] = useState("");
|
|
136
117
|
const initialSelected = useMemo(() => {
|
|
137
118
|
// Handle quickpick variant with string defaultValue (e.g., "This Month")
|
|
@@ -164,19 +145,9 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
|
|
|
164
145
|
|
|
165
146
|
const dropdownRef = useRef(null);
|
|
166
147
|
const inputRef = useRef<HTMLInputElement>(null);
|
|
167
|
-
const inputWrapperRef = useRef
|
|
148
|
+
const inputWrapperRef = useRef(null);
|
|
168
149
|
const dropdownContainerRef = useRef(null);
|
|
169
150
|
|
|
170
|
-
const handleLabelClick = (e: React.MouseEvent) => {
|
|
171
|
-
e.stopPropagation();
|
|
172
|
-
if (selectId) {
|
|
173
|
-
const trigger = document.getElementById(selectId);
|
|
174
|
-
if (trigger) trigger.focus();
|
|
175
|
-
}
|
|
176
|
-
setIsInputFocused(true);
|
|
177
|
-
toggleDropdown();
|
|
178
|
-
};
|
|
179
|
-
|
|
180
151
|
const selectedArray = Array.isArray(selected)
|
|
181
152
|
? selected
|
|
182
153
|
: selected && Object.keys(selected).length
|
|
@@ -240,34 +211,6 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
|
|
|
240
211
|
}
|
|
241
212
|
}, [isDropDownClosed]);
|
|
242
213
|
|
|
243
|
-
// Auto-position dropdown above/below based on available space
|
|
244
|
-
useEffect(() => {
|
|
245
|
-
if (!isDropDownClosed && dropdownContainerRef.current) {
|
|
246
|
-
const container = dropdownContainerRef.current;
|
|
247
|
-
const wrapper = container.closest('.dropdown_wrapper') as HTMLElement;
|
|
248
|
-
if (!wrapper) return;
|
|
249
|
-
|
|
250
|
-
const wrapperRect = wrapper.getBoundingClientRect();
|
|
251
|
-
const h = container.getBoundingClientRect().height || container.scrollHeight;
|
|
252
|
-
const spaceBelow = window.innerHeight - wrapperRect.bottom;
|
|
253
|
-
const spaceAbove = wrapperRect.top;
|
|
254
|
-
|
|
255
|
-
// If not enough space below but enough space above, position above
|
|
256
|
-
if (spaceBelow < h + 10 && spaceAbove >= h + 10) {
|
|
257
|
-
container.style.top = "auto";
|
|
258
|
-
container.style.bottom = "calc(100% + 5px)";
|
|
259
|
-
container.style.marginTop = "0";
|
|
260
|
-
container.style.marginBottom = "0";
|
|
261
|
-
} else {
|
|
262
|
-
// Default: position below
|
|
263
|
-
container.style.top = "";
|
|
264
|
-
container.style.bottom = "";
|
|
265
|
-
container.style.marginTop = "";
|
|
266
|
-
container.style.marginBottom = "";
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
}, [isDropDownClosed, dropdownContainerRef]);
|
|
270
|
-
|
|
271
214
|
|
|
272
215
|
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
273
216
|
setFilterItem(e.target.value);
|
|
@@ -432,14 +375,10 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
|
|
|
432
375
|
value={{
|
|
433
376
|
activeStyle,
|
|
434
377
|
autocomplete,
|
|
435
|
-
clearable,
|
|
436
378
|
dropdownContainerRef,
|
|
437
|
-
error,
|
|
438
|
-
errorId,
|
|
439
|
-
filterItem,
|
|
440
379
|
filteredOptions,
|
|
380
|
+
filterItem,
|
|
441
381
|
focusedOptionIndex,
|
|
442
|
-
label,
|
|
443
382
|
formPillProps,
|
|
444
383
|
handleBackspace,
|
|
445
384
|
handleChange,
|
|
@@ -449,7 +388,6 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
|
|
|
449
388
|
inputWrapperRef,
|
|
450
389
|
isDropDownClosed,
|
|
451
390
|
isInputFocused,
|
|
452
|
-
selectId,
|
|
453
391
|
multiSelect,
|
|
454
392
|
onSelect,
|
|
455
393
|
optionsWithBlankSelection,
|
|
@@ -461,30 +399,13 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
|
|
|
461
399
|
toggleDropdown
|
|
462
400
|
}}
|
|
463
401
|
>
|
|
464
|
-
{label &&
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
<Caption
|
|
472
|
-
className="pb_dropdown_kit_label"
|
|
473
|
-
dark={dark}
|
|
474
|
-
marginBottom="xs"
|
|
475
|
-
>
|
|
476
|
-
{label} <span style={{ color: `${colors.error}` }}>*</span>
|
|
477
|
-
</Caption>
|
|
478
|
-
) : (
|
|
479
|
-
<Caption
|
|
480
|
-
className="pb_dropdown_kit_label"
|
|
481
|
-
dark={dark}
|
|
482
|
-
marginBottom="xs"
|
|
483
|
-
text={label}
|
|
484
|
-
/>
|
|
485
|
-
)}
|
|
486
|
-
</label>
|
|
487
|
-
)}
|
|
402
|
+
{label &&
|
|
403
|
+
<Caption
|
|
404
|
+
dark={dark}
|
|
405
|
+
marginBottom="xs"
|
|
406
|
+
text={label}
|
|
407
|
+
/>
|
|
408
|
+
}
|
|
488
409
|
<div className={`dropdown_wrapper ${error ? 'error' : ''}`}
|
|
489
410
|
onBlur={() => {
|
|
490
411
|
// Debounce to delay the execution to prevent jumpiness in Focus state
|
|
@@ -505,8 +426,8 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
|
|
|
505
426
|
</>
|
|
506
427
|
) : (
|
|
507
428
|
<>
|
|
508
|
-
<DropdownTrigger
|
|
509
|
-
<DropdownContainer
|
|
429
|
+
<DropdownTrigger />
|
|
430
|
+
<DropdownContainer>
|
|
510
431
|
{optionsWithBlankSelection &&
|
|
511
432
|
optionsWithBlankSelection?.map((option: GenericObject) => (
|
|
512
433
|
<DropdownOption key={option.id}
|
|
@@ -517,16 +438,12 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
|
|
|
517
438
|
</>
|
|
518
439
|
)}
|
|
519
440
|
|
|
520
|
-
{error &&
|
|
441
|
+
{error &&
|
|
521
442
|
<Body
|
|
522
|
-
aria={{ atomic: "true", live: "polite" }}
|
|
523
|
-
dark={dark}
|
|
524
|
-
htmlOptions={{ role: "alert" }}
|
|
525
|
-
id={errorId}
|
|
526
443
|
status="negative"
|
|
527
444
|
text={error}
|
|
528
445
|
/>
|
|
529
|
-
|
|
446
|
+
}
|
|
530
447
|
</div>
|
|
531
448
|
</DropdownContext.Provider>
|
|
532
449
|
</div>
|