playbook_ui 14.19.0.pre.alpha.PLAY21377811 → 14.19.0.pre.alpha.borderfixadvancedtable7815
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/_advanced_table.scss +4 -3
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.html.erb +16 -8
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.rb +9 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_actions_rails.html.erb +137 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_actions_rails.md +3 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_header_rails.html.erb +40 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_header_rails.md +1 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_advanced_table/index.js +355 -52
- data/app/pb_kits/playbook/pb_advanced_table/table_action_bar.html.erb +23 -0
- data/app/pb_kits/playbook/pb_advanced_table/table_action_bar.rb +19 -0
- data/app/pb_kits/playbook/pb_advanced_table/table_header.rb +4 -0
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +1 -1
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +19 -77
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default.html.erb +10 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +1 -11
- data/app/pb_kits/playbook/pb_dropdown/docs/index.js +0 -5
- data/app/pb_kits/playbook/pb_dropdown/dropdown.html.erb +3 -3
- data/app/pb_kits/playbook/pb_dropdown/dropdown.rb +2 -16
- data/app/pb_kits/playbook/pb_dropdown/dropdown_trigger.html.erb +13 -34
- data/app/pb_kits/playbook/pb_dropdown/dropdown_trigger.rb +1 -3
- data/app/pb_kits/playbook/pb_dropdown/hooks/useHandleOnKeydown.tsx +6 -0
- data/app/pb_kits/playbook/pb_dropdown/index.js +41 -334
- data/app/pb_kits/playbook/pb_dropdown/keyboard_accessibility.js +12 -39
- data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownOption.tsx +12 -16
- data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownTrigger.tsx +12 -78
- data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +0 -1
- data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +0 -1
- data/dist/chunks/_typeahead-B9-s4j4U.js +22 -0
- data/dist/chunks/_weekday_stacked-CvzpmXD5.js +45 -0
- data/dist/chunks/{lib-BB_ZEriO.js → lib-B20MXZcW.js} +2 -2
- data/dist/chunks/{pb_form_validation-C0la9CZR.js → pb_form_validation-WWvUXPKD.js} +1 -1
- data/dist/chunks/vendor.js +1 -1
- data/dist/playbook-doc.js +1 -1
- data/dist/playbook-rails-react-bindings.js +1 -1
- data/dist/playbook-rails.js +1 -1
- data/dist/playbook.css +1 -1
- data/lib/playbook/version.rb +1 -1
- metadata +12 -23
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default_rails.html.erb +0 -31
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default_rails.md +0 -5
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select.jsx +0 -56
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select.md +0 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_display.jsx +0 -58
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_display.md +0 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_display_rails.html.erb +0 -20
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_display_rails.md +0 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_rails.html.erb +0 -19
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_rails.md +0 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_autocomplete.html.erb +0 -20
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_autocomplete.jsx +0 -57
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_autocomplete.md +0 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_custom_options.html.erb +0 -50
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_custom_options.jsx +0 -105
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_default.html.erb +0 -22
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_default.jsx +0 -67
- data/app/pb_kits/playbook/pb_dropdown/subcomponents/MultiSelectTriggerDisplay.tsx +0 -58
- data/dist/chunks/_typeahead-CLGxsWj4.js +0 -22
- data/dist/chunks/_weekday_stacked-BrJMDrKs.js +0 -45
@@ -1,4 +1,4 @@
|
|
1
|
-
import React, { useState, useRef, useEffect, forwardRef, useImperativeHandle
|
1
|
+
import React, { useState, useRef, useEffect, forwardRef, useImperativeHandle } from "react";
|
2
2
|
import classnames from "classnames";
|
3
3
|
import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from "../utilities/props";
|
4
4
|
import { globalProps } from "../utilities/globalProps";
|
@@ -25,7 +25,6 @@ type DropdownProps = {
|
|
25
25
|
blankSelection?: string;
|
26
26
|
children?: React.ReactChild[] | React.ReactChild | React.ReactElement[];
|
27
27
|
className?: string;
|
28
|
-
formPillProps?: GenericObject;
|
29
28
|
dark?: boolean;
|
30
29
|
data?: { [key: string]: string };
|
31
30
|
defaultValue?: GenericObject;
|
@@ -34,7 +33,6 @@ type DropdownProps = {
|
|
34
33
|
id?: string;
|
35
34
|
isClosed?: boolean;
|
36
35
|
label?: string;
|
37
|
-
multiSelect?: boolean;
|
38
36
|
onSelect?: (arg: GenericObject) => null;
|
39
37
|
options: GenericObject;
|
40
38
|
separators?: boolean;
|
@@ -63,8 +61,6 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
|
|
63
61
|
id,
|
64
62
|
isClosed = true,
|
65
63
|
label,
|
66
|
-
multiSelect = false,
|
67
|
-
formPillProps,
|
68
64
|
onSelect,
|
69
65
|
options,
|
70
66
|
separators = true,
|
@@ -84,20 +80,7 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
|
|
84
80
|
const [isDropDownClosed, setIsDropDownClosed, toggleDropdown] = useDropdown(isClosed);
|
85
81
|
|
86
82
|
const [filterItem, setFilterItem] = useState("");
|
87
|
-
const
|
88
|
-
if (multiSelect) {
|
89
|
-
if (Array.isArray(defaultValue)) return defaultValue;
|
90
|
-
return defaultValue && Object.keys(defaultValue).length
|
91
|
-
? [defaultValue]
|
92
|
-
: [];
|
93
|
-
}
|
94
|
-
return defaultValue || {};
|
95
|
-
}, [multiSelect, defaultValue]);
|
96
|
-
|
97
|
-
const [selected, setSelected] = useState<GenericObject | GenericObject[]>(
|
98
|
-
initialSelected
|
99
|
-
);
|
100
|
-
|
83
|
+
const [selected, setSelected] = useState<GenericObject>(defaultValue);
|
101
84
|
const [isInputFocused, setIsInputFocused] = useState(false);
|
102
85
|
const [hasTriggerSubcomponent, setHasTriggerSubcomponent] = useState(true);
|
103
86
|
const [hasContainerSubcomponent, setHasContainerSubcomponent] =
|
@@ -110,12 +93,6 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
|
|
110
93
|
const inputWrapperRef = useRef(null);
|
111
94
|
const dropdownContainerRef = useRef(null);
|
112
95
|
|
113
|
-
const selectedArray = Array.isArray(selected)
|
114
|
-
? selected
|
115
|
-
: selected && Object.keys(selected).length
|
116
|
-
? [selected]
|
117
|
-
: [];
|
118
|
-
|
119
96
|
const { trigger, container, otherChildren } =
|
120
97
|
separateChildComponents(children);
|
121
98
|
|
@@ -147,23 +124,16 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
|
|
147
124
|
|
148
125
|
const blankSelectionOption: GenericObject = blankSelection ? [{ label: blankSelection, value: "" }] : [];
|
149
126
|
const optionsWithBlankSelection = blankSelectionOption.concat(options);
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
}, [optionsWithBlankSelection, selectedArray, multiSelect]);
|
155
|
-
|
156
|
-
const filteredOptions = useMemo(() => {
|
157
|
-
return availableOptions.filter((opt: GenericObject) =>
|
158
|
-
String(opt.label).toLowerCase().includes(filterItem.toLowerCase())
|
159
|
-
);
|
160
|
-
}, [availableOptions, filterItem]);
|
127
|
+
const filteredOptions = optionsWithBlankSelection?.filter((option: GenericObject) => {
|
128
|
+
const label = typeof option.label === 'string' ? option.label.toLowerCase() : option.label;
|
129
|
+
return String(label).toLowerCase().includes(filterItem.toLowerCase());
|
130
|
+
});
|
161
131
|
|
162
132
|
// For keyboard accessibility: Set focus within dropdown to selected item if it exists
|
163
133
|
useEffect(() => {
|
164
134
|
if (!isDropDownClosed) {
|
165
135
|
let newIndex = 0;
|
166
|
-
if (selected &&
|
136
|
+
if (selected && selected?.label) {
|
167
137
|
const selectedIndex = filteredOptions.findIndex((option: GenericObject) => option.label === selected.label);
|
168
138
|
if (selectedIndex >= 0) {
|
169
139
|
newIndex = selectedIndex;
|
@@ -179,27 +149,12 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
|
|
179
149
|
setIsDropDownClosed(false);
|
180
150
|
};
|
181
151
|
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
const next = exists
|
189
|
-
? list.filter((option) => option.value !== clickedItem.value)
|
190
|
-
: [...list, clickedItem];
|
191
|
-
onSelect && onSelect(next);
|
192
|
-
return next;
|
193
|
-
});
|
194
|
-
setFilterItem("");
|
195
|
-
setIsDropDownClosed(true);
|
196
|
-
} else {
|
197
|
-
setSelected(clickedItem);
|
198
|
-
setFilterItem("");
|
199
|
-
setIsDropDownClosed(true);
|
200
|
-
onSelect && onSelect(clickedItem);
|
201
|
-
}
|
202
|
-
};
|
152
|
+
const handleOptionClick = (selectedItem: GenericObject) => {
|
153
|
+
setSelected(selectedItem);
|
154
|
+
setFilterItem("");
|
155
|
+
setIsDropDownClosed(true);
|
156
|
+
onSelect && onSelect(selectedItem);
|
157
|
+
};
|
203
158
|
|
204
159
|
const handleWrapperClick = () => {
|
205
160
|
autocomplete && inputRef?.current?.focus();
|
@@ -207,14 +162,9 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
|
|
207
162
|
};
|
208
163
|
|
209
164
|
const handleBackspace = () => {
|
210
|
-
if (multiSelect) {
|
211
|
-
setSelected([]);
|
212
|
-
onSelect && onSelect([]);
|
213
|
-
} else {
|
214
165
|
setSelected({});
|
215
166
|
onSelect && onSelect(null);
|
216
167
|
setFocusedOptionIndex(-1);
|
217
|
-
}
|
218
168
|
};
|
219
169
|
|
220
170
|
const componentsToRender = prepareSubcomponents({
|
@@ -228,17 +178,12 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
|
|
228
178
|
});
|
229
179
|
|
230
180
|
useImperativeHandle(ref, () => ({
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
onSelect && onSelect(null);
|
238
|
-
}
|
239
|
-
setFilterItem("");
|
240
|
-
setIsDropDownClosed(true);
|
241
|
-
},
|
181
|
+
clearSelected: () => {
|
182
|
+
setSelected({});
|
183
|
+
setFilterItem("");
|
184
|
+
setIsDropDownClosed(true);
|
185
|
+
onSelect && onSelect(null);
|
186
|
+
},
|
242
187
|
}));
|
243
188
|
|
244
189
|
return (
|
@@ -256,7 +201,6 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
|
|
256
201
|
filteredOptions,
|
257
202
|
filterItem,
|
258
203
|
focusedOptionIndex,
|
259
|
-
formPillProps,
|
260
204
|
handleBackspace,
|
261
205
|
handleChange,
|
262
206
|
handleOptionClick,
|
@@ -265,8 +209,6 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
|
|
265
209
|
inputWrapperRef,
|
266
210
|
isDropDownClosed,
|
267
211
|
isInputFocused,
|
268
|
-
multiSelect,
|
269
|
-
onSelect,
|
270
212
|
optionsWithBlankSelection,
|
271
213
|
selected,
|
272
214
|
setFocusedOptionIndex,
|
@@ -1,45 +1,35 @@
|
|
1
1
|
examples:
|
2
2
|
rails:
|
3
|
-
-
|
3
|
+
- dropdown_default: Default
|
4
4
|
- dropdown_with_autocomplete: Autocomplete
|
5
|
-
- dropdown_multi_select_rails: Multi Select
|
6
|
-
- dropdown_multi_select_with_autocomplete: Multi Select with Autocomplete
|
7
|
-
- dropdown_multi_select_display_rails: Multi Select with Form Pill Props
|
8
5
|
- dropdown_subtle_variant: Subtle Variant
|
9
6
|
- dropdown_subcomponent_structure_rails: Subcomponent Structure
|
10
7
|
- dropdown_with_autocomplete_with_subcomponents: Autocomplete with Subcomponent Structure
|
11
8
|
- dropdown_with_label: With Label
|
12
9
|
- dropdown_with_custom_options_rails: Custom Options
|
13
|
-
- dropdown_multi_select_with_custom_options: Multi Select with Custom Options
|
14
10
|
- dropdown_with_custom_display_rails: Custom Display
|
15
11
|
- dropdown_with_custom_trigger_rails: Custom Trigger
|
16
12
|
- dropdown_with_search_rails: Custom Trigger Dropdown with Search
|
17
13
|
- dropdown_with_custom_padding: Custom Option Padding
|
18
14
|
- dropdown_error: Dropdown with Error
|
19
15
|
- dropdown_default_value: Default Value
|
20
|
-
- dropdown_multi_select_with_default: Multi Select Default Value
|
21
16
|
- dropdown_blank_selection: Blank Selection
|
22
17
|
- dropdown_separators_hidden: Separators Hidden
|
23
18
|
|
24
19
|
react:
|
25
20
|
- dropdown_default: Default
|
26
21
|
- dropdown_with_autocomplete: Autocomplete
|
27
|
-
- dropdown_multi_select: Multi Select
|
28
|
-
- dropdown_multi_select_with_autocomplete: Multi Select with Autocomplete
|
29
|
-
- dropdown_multi_select_display: Multi Select with Form Pill Props
|
30
22
|
- dropdown_subtle_variant: Subtle Variant
|
31
23
|
- dropdown_subcomponent_structure: Subcomponent Structure
|
32
24
|
- dropdown_with_autocomplete_with_subcomponents: Autocomplete with Subcomponent Structure
|
33
25
|
- dropdown_with_label: With Label
|
34
26
|
- dropdown_with_custom_options: Custom Options
|
35
|
-
- dropdown_multi_select_with_custom_options: Multi Select with Custom Options
|
36
27
|
- dropdown_with_custom_display: Custom Display
|
37
28
|
- dropdown_with_custom_trigger: Custom Trigger
|
38
29
|
- dropdown_with_search: Custom Trigger Dropdown with Search
|
39
30
|
- dropdown_with_custom_padding: Custom Option Padding
|
40
31
|
- dropdown_error: Dropdown with Error
|
41
32
|
- dropdown_default_value: Default Value
|
42
|
-
- dropdown_multi_select_with_default: Multi Select Default Value
|
43
33
|
- dropdown_blank_selection: Blank Selection
|
44
34
|
- dropdown_clear_selection: Clear Selection
|
45
35
|
- dropdown_separators_hidden: Separators Hidden
|
@@ -15,8 +15,3 @@ export { default as DropdownClearSelection } from './_dropdown_clear_selection.j
|
|
15
15
|
export { default as DropdownSubtleVariant } from './_dropdown_subtle_variant.jsx'
|
16
16
|
export { default as DropdownSeparatorsHidden } from './_dropdown_separators_hidden.jsx'
|
17
17
|
export {default as DropdownWithSearch} from './_dropdown_with_search.jsx'
|
18
|
-
export { default as DropdownMultiSelect } from './_dropdown_multi_select.jsx'
|
19
|
-
export { default as DropdownMultiSelectDisplay } from './_dropdown_multi_select_display.jsx'
|
20
|
-
export { default as DropdownMultiSelectWithAutocomplete } from './_dropdown_multi_select_with_autocomplete.jsx'
|
21
|
-
export { default as DropdownMultiSelectWithDefault } from './_dropdown_multi_select_with_default.jsx'
|
22
|
-
export { default as DropdownMultiSelectWithCustomOptions } from './_dropdown_multi_select_with_custom_options.jsx'
|
@@ -6,7 +6,7 @@
|
|
6
6
|
<input
|
7
7
|
data-default-value="<%= input_default_value %>"
|
8
8
|
id="dropdown-selected-option"
|
9
|
-
name="<%= object.name
|
9
|
+
name="<%= object.name %>"
|
10
10
|
style="display: none"
|
11
11
|
<%= object.required ? "required" : ""%>
|
12
12
|
/>
|
@@ -14,8 +14,8 @@
|
|
14
14
|
<%= content.presence %>
|
15
15
|
<%= pb_rails("body", props: { status: "negative", text: object.error }) %>
|
16
16
|
<% else %>
|
17
|
-
<%= pb_rails("dropdown/dropdown_trigger", props:{
|
18
|
-
<%= pb_rails("dropdown/dropdown_container", props: {
|
17
|
+
<%= pb_rails("dropdown/dropdown_trigger", props:{autocomplete: object.autocomplete}) %>
|
18
|
+
<%= pb_rails("dropdown/dropdown_container", props: {searchbar: object.searchbar}) do %>
|
19
19
|
<% if options_with_blank.present? %>
|
20
20
|
<% options_with_blank.each do |option| %>
|
21
21
|
<%= pb_rails("dropdown/dropdown_option", props: {option: option}) %>
|
@@ -22,17 +22,9 @@ module Playbook
|
|
22
22
|
default: false
|
23
23
|
prop :searchbar, type: Playbook::Props::Boolean,
|
24
24
|
default: false
|
25
|
-
prop :multi_select, type: Playbook::Props::Boolean,
|
26
|
-
default: false
|
27
|
-
prop :form_pill_props, type: Playbook::Props::HashProp,
|
28
|
-
default: {}
|
29
25
|
|
30
26
|
def data
|
31
|
-
Hash(prop(:data)).merge(
|
32
|
-
pb_dropdown: true,
|
33
|
-
pb_dropdown_multi_select: multi_select,
|
34
|
-
form_pill_props: form_pill_props.to_json
|
35
|
-
)
|
27
|
+
Hash(prop(:data)).merge(pb_dropdown: true)
|
36
28
|
end
|
37
29
|
|
38
30
|
def classname
|
@@ -46,13 +38,7 @@ module Playbook
|
|
46
38
|
end
|
47
39
|
|
48
40
|
def input_default_value
|
49
|
-
|
50
|
-
|
51
|
-
if multi_select
|
52
|
-
default_value.map { |v| v.transform_keys(&:to_s)["id"] }.join(",")
|
53
|
-
else
|
54
|
-
default_value.transform_keys(&:to_s)["id"]
|
55
|
-
end
|
41
|
+
default_value.present? ? default_value.transform_keys(&:to_s)["id"] : ""
|
56
42
|
end
|
57
43
|
|
58
44
|
def separators_class
|
@@ -14,7 +14,7 @@
|
|
14
14
|
padding_y:"xs",
|
15
15
|
html_options: {tabindex:"0"}
|
16
16
|
}) do %>
|
17
|
-
<%= pb_rails("flex/flex_item"
|
17
|
+
<%= pb_rails("flex/flex_item") do %>
|
18
18
|
<%= pb_rails("flex", props: {align: "center"}) do %>
|
19
19
|
<% if object.custom_display.present? %>
|
20
20
|
<%= pb_rails("flex", props: {align: "center"}) do %>
|
@@ -24,44 +24,23 @@
|
|
24
24
|
<%= pb_rails("body", props: {text: object.default_display_placeholder, id: "dropdown_trigger_display"}) %>
|
25
25
|
<% end %>
|
26
26
|
<% else %>
|
27
|
-
<% if object.
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
type="text"
|
36
|
-
placeholder="<%= object.placeholder || 'Select…' %>"
|
37
|
-
autocomplete="off"
|
38
|
-
/>
|
39
|
-
<% else %>
|
40
|
-
<%= pb_rails("body", props: {text: object.default_display_placeholder, id: "dropdown_trigger_display_multi_select"}) %>
|
41
|
-
<% end %>
|
42
|
-
<% end %>
|
27
|
+
<% if object.autocomplete %>
|
28
|
+
<input
|
29
|
+
data-dropdown-autocomplete
|
30
|
+
class="dropdown_input"
|
31
|
+
type="text"
|
32
|
+
placeholder="<%= object.placeholder || 'Select…' %>"
|
33
|
+
autocomplete="off"
|
34
|
+
/>
|
43
35
|
<% else %>
|
44
|
-
|
45
|
-
<input
|
46
|
-
data-dropdown-autocomplete
|
47
|
-
class="dropdown_input"
|
48
|
-
type="text"
|
49
|
-
placeholder="<%= object.placeholder || 'Select…' %>"
|
50
|
-
autocomplete="off"
|
51
|
-
/>
|
52
|
-
<% else %>
|
53
|
-
<%= pb_rails("body", props: {text: object.default_display_placeholder, id: "dropdown_trigger_display"}) %>
|
54
|
-
<% end %>
|
36
|
+
<%= pb_rails("body", props: {text: object.default_display_placeholder, id: "dropdown_trigger_display"}) %>
|
55
37
|
<% end %>
|
56
38
|
<% end %>
|
57
39
|
<% end %>
|
58
40
|
<% end %>
|
59
|
-
<%= pb_rails("flex
|
60
|
-
<%= pb_rails("
|
61
|
-
|
62
|
-
<%= pb_rails("icon", props: {icon: "chevron-down", cursor: "pointer", size:"sm", id: "dropdown_open_icon"}) %>
|
63
|
-
<%= pb_rails("icon", props: {icon: "chevron-up", cursor: "pointer", size:"sm", id: "dropdown_close_icon"}) %>
|
64
|
-
<% end %>
|
41
|
+
<%= pb_rails("body", props: {display: "flex"}) do %>
|
42
|
+
<%= pb_rails("icon", props: {icon: "chevron-down", cursor: "pointer", size:"sm", id: "dropdown_open_icon"}) %>
|
43
|
+
<%= pb_rails("icon", props: {icon: "chevron-up", cursor: "pointer", size:"sm", id: "dropdown_close_icon"}) %>
|
65
44
|
<% end %>
|
66
45
|
<% end %>
|
67
46
|
<% end %>
|
@@ -11,8 +11,6 @@ module Playbook
|
|
11
11
|
prop :custom_display
|
12
12
|
prop :autocomplete, type: Playbook::Props::Boolean,
|
13
13
|
default: false
|
14
|
-
prop :multi_select, type: Playbook::Props::Boolean,
|
15
|
-
default: false
|
16
14
|
|
17
15
|
def data
|
18
16
|
Hash(prop(:data)).merge(dropdown_trigger: true, dropdown_placeholder: default_display_placeholder)
|
@@ -27,7 +25,7 @@ module Playbook
|
|
27
25
|
end
|
28
26
|
|
29
27
|
def trigger_wrapper_classes
|
30
|
-
generate_classname("dropdown_trigger_wrapper", ("select_only" unless autocomplete
|
28
|
+
generate_classname("dropdown_trigger_wrapper", ("select_only" unless autocomplete))
|
31
29
|
end
|
32
30
|
end
|
33
31
|
end
|